基于synchronized关键字的锁机制有以下问题:
锁只有一种类型,而且对所有同步操作都是一样的作用锁只能在代码块或方法开始的地方获得,在结束的地方释放线程要么得到锁,要么阻塞,没有其他的可能性 Java 5对锁机制进行了重构, 显示的锁都实现了java.util.concurrent.Lock接口,主要有两个实现类: ReentrantLock - 比synchronized稍微灵活一些的重入锁ReentrantReadWriteLock - 在读操作很多写操作很少时性能更好的一种重入锁CountDownLatch是一种简单的同步模式,它让一个线程可以等待一个或多个线程完成它们的工作从而避免对临界资源并发访问所引发的各种问题。
主要方法
public CountDownLatch(int count);
public void countDown(); // 当前线程调用此方法,则计数减一
public void await() throws InterruptedException; // 调用此方法会一直阻塞当前线程,直到计时器的值为0
ConcurrentHashMap是HashMap在并发环境下的版本。
CopyOnWriteArrayList是ArrayList在并发环境下的替代品。
TransferQueue,它比BlockingQueue多了一个叫transfer的方法,如果接收线程处于等待状态,该操作可以马上将任务交给它,否则就会阻塞直至取走该任务的线程出现。