java并发容器

本文介绍了同步容器与并发容器的区别及应用,详细讨论了ConcurrentMap、CopyOnWriteArrayList等并发容器的特点,以及阻塞队列和生产者与消费者模式的工作原理。同时,还讲解了阻塞方法与中断方法的概念及其在多线程编程中的作用。

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

如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(信号量)需要拿到许可

 

 

 

 

 

 

 

 

 

 

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值