多线程 Synchronized关键字和Lock
Synchronized 分为实例锁和全局锁.
实例锁为 synchronized(this) 和 非static synchronized方法. 也加对象锁. 只要一个线程访问这类的一个synchronize方法, 其他的synchronized方法也将被阻塞.
全局锁 synchronized(.class) 和static synchronize方法, 同样也是一个线程只能同时访问一个方法
实例锁和全局锁 一起用的话 起不到同步的作用
public synchronized void increase() { inc++; }上面是synchronized的实现方法;
Lock lock = new ReentrantLock(); public void increase() { lock.lock(); try { inc++; } finally{ lock.unlock(); } }下面是lock的做法,是相同的.
如果是简单的加减的做法java.util.concurrent.atomic提供了原子类
public AtomicInteger inc = new AtomicInteger(); public void increase() { inc.getAndIncrement(); }这个做法等同于上的

浙公网安备 33010602011771号