廖雪峰Java11多线程编程-3高级concurrent包-4Concurrent集合
生活随笔
收集整理的这篇文章主要介绍了
廖雪峰Java11多线程编程-3高级concurrent包-4Concurrent集合
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
Concurrent
用ReentrantLock+Condition实现Blocking Queue。
Blocking Queue:当一个线程调用getTask()时,该方法内部可能让给线程进入等待状态,直到条件满足。线程唤醒以后,getTask()才会返回,而java.util.concurrent提供了线程安全的Blocking集合,如ArrayBlockingQueue。
java.util.Collections工具类还提供了旧的线程安全集合转换器:
如把一个HashMap转化为线程安全的HashMap:
实际使用了一个包装类,包装了非线程安全的Map,然后对所有的方法都用synchronized加锁,这样获得线程安全的集合,性能比Concurrent低很多,不推荐使用。
总结:
使用java.util.concurrent提供的Blocking集合可以简化多线程编程
- 多线程同时访问Blocking集合是安全的
- 尽量使用JDK提供的concurrent集合,避免自己编写同步代码
转载于:https://www.cnblogs.com/csj2018/p/11016289.html
总结
以上是生活随笔为你收集整理的廖雪峰Java11多线程编程-3高级concurrent包-4Concurrent集合的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: [转]数据库性能优化(老Key)
- 下一篇: Effective.Java第23-33