Java锁(二)ReentrantLock独占锁分析

ReentrantLock的功能是实现代码段的并发访问控制,是一种排它锁,也就是通常意义上所说的锁,内部有两种实现NonfairSync和FairSync,公平锁和非公平锁,默认采用非公平锁策略。ReentrantLock的实现不仅可以替代隐式的synchronized关键字,而且能够提供超过关键字本身的多种功能。 1、ReentrantLock的使用 class X { private final ReentrantLock lock = new Reentrant ...

Java并发编程之锁

作为一个java开发者,并发编程是不可或缺的,在并发的过程,Lock是并发的关键, 本文主要从排它锁和共享锁的实例来讲解锁的机制。 本文主要从以下方面来讲解锁的原理以及使用: 1、AbstractQueuedSynchronizer分析 2、ReentrantLock独占锁分析 3、CountDownLatch共享锁分析 4、ConditionObject分析 5、CyclicBarrier分析

Webx的启动过程讲解

了解webx的启动过程,对应用程序的加载和初始化,以及排查问题,有很大的帮助。 =本文从Webx2和webx3启动过程,分别来讲解 1、 Webx2应用启动过程 在web启动的时候,将com.alibaba.webx.WebxControllerServlet的属性load-on-startup设置为1,让其自动加载。Webx中的WebxControllerServlet继承于 AbstractWebxControllerServlet,而AbstractWebxCont ...

JDK设计模式(二)工厂模式

工厂模式是我们最常用的实例化对象模式,使用工厂方法代替new操作的一种模式,使用工厂模式,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。 1、简单工厂模式 简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。 简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式, 可以理解为是不同工厂模式的一个特殊实现。 简单工 ...

JDK设计模式(一)单例模式

单例模式确保一个类只有一个实例,并提供一个全局访问点。 其类图如下所示。 <!--[endif]-→<!--[if gte mso 9]><![endif]-→ 本文主要从饿汉式,懒汉式,懒汉式改进,来讲解单例模式。 1、饿汉式单例 饿汉式单例类是在Java 语言里实现得最为简便的单例类。在类被加载时,就会将自己实例化。 public class Singleton { priv ...

JDK中的设计模式

本文主要是归纳了JDK中所包含的设计模式,包括作用和其设计类图。 一、设计模式的作用 反复出现问题的解决方案 增强软件的灵活性 适应软件不断变化 二、设计模式的七大原则 开闭原则OCP(Open Close Principle),一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。 里氏代换原则LSP(Liskov Substitution Principle),子类可以扩展父类的功能,但不能改变父类原有的功能 依赖倒转原则DIP(Depe ...

Java锁(一)AbstractQueuedSynchronizer分析

作为一个java开发者,并发编程是不可或缺的,在并发的过程,Lock是并发的关键, 本系列文章主要来讲解锁的原理和机制。 在理解J.U.C原理以及锁机制之前,我们来介绍J.U.C框架最核心也是最复杂的一个基础类:java.util.concurrent.locks.AbstractQueuedSynchronizer。 上面的继承体系中,AbstractQueuedSynchronizer是CountDownLatch/Semaphore/RenntrantRe ...

深入理解java内存模型

java线程之间的通信对程序员完全透明,内存可见性问题很容易困扰java程序员,本文试图揭开java内存模型神秘的面纱。 本文大致分三部分: 重排序与顺序一致性; 三个同步原语(lock,volatile,final)的内存语义,重排序规则及在处理器中的实现; java内存模型的设计目标,及其与处理器内存模型和顺序一致性内存模型的关系。 [深入理解java内存模型(一)——基础](http://www.infoq.com/cn/articles/java-memory-m ...