多线程四(阻塞队列、信号量、同步集合)

本文介绍了Java中的阻塞队列,包括ArrayBlockingQueue、LinkedBlockingQueue和PriorityBlockingQueue,强调了阻塞队列在同步和锁管理上的便利。接着讨论了信号量如何用于限制并发访问资源的线程数,以及Semaphore类的acquire()和release()方法。最后,文章提到了同步集合的概念,展示了如何通过Collections工具类将线程不安全的集合转换为线程安全的集合,以及Java中旧有的线程安全类如Vector、Stack和Hashtable的替代选择。
摘要由CSDN通过智能技术生成
  • 阻塞队列

队列是一种先进先出的数据结构。元素被追加到队列末尾,然后从队列头删除。

在优先队列中,元素被赋予优先级,当访问元素的时候,拥有最高优先级的元素首先被删除。

阻塞队列在试图向一个满队列添加元素或者从空队列中删除元素时会导致线程阻塞。

java中阻塞队列的实现由java.util.concurrent.BlockingQueue接口提供,该接口扩展了java.util.Queue,并且提供同步的put和take方法向队列尾部添加元素,以及从队列头部删除元素。

java中提供了java.util.concurrent.BlockingQueue接口的以下几种实现:

(1)ArrayBlockingQueue:使用数组实现阻塞队列,必须指定一个容量或者可选的公平性来构造。

(2)LinkedBlockingQueue:使用链表实现,可以创建不受限的或受限的队列。

(3)PriorityBlockingQueue:优先队列,可以创建不受限的或受限的优先队列。

注:对于不受限的队列,put方法永远不会阻塞。

阻塞队列和前面说的同步和锁的不

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值