java并发容器

一: 同步容器都是线程安全的

如vector 和 hashtable ,collections.synchronized 实现线程安全的是通过,将它们的状态封装起来,并对每个公有方法都进行同步。但在一些复合操作时,还是要加锁来保护复合操作。在容器在迭代过程中被修改时,会抛异常

二: 并发容器可以改进一下同步容器的性能: 因为并发容器增加了对一些常见复合操作的支持,迭代器都没有加锁。

1、ConcurrentMap , CopyOnWriteArrayList 

2、jdk 1.5 新增容器 :Queue、BlockingQueue

三:ConcurrentMap

优点

1、并不是将每个方法都在同一个锁上同步并使得每次只能有一个线程访问容器,而是使用一种粒度更细的加锁机制来实现。

2、提供的迭代器不会抛异常,不需要在迭代过程中加锁。

缺点

没有实现对Map加锁以提供独占访问

四、CopyOnWriteArrayList

每次修改时,都会创建并重新发布一个副本

五、阻塞队列和生产者与消费者模式

六、阻塞方法与中断方法

1、阻塞: 等待获得一个锁,等待从Thread.sleep方法中醒来,等待另一个线程的计算结果时,都可能会阻塞。wait 会释放锁,但sleep不会释放锁。

2、当中断时,会抛InterruptedException异常 ,可以调用Thread.currentThread().interrupt()方法,恢复中断状态

七、同步工具类

1、CountDownLacth (闭锁)

2、FutureTask

3、Semaphore(信号量)需要拿到许可

猜你喜欢

转载自kayak2015.iteye.com/blog/2287404
今日推荐