【Blocking,blocking】java中notify/wait方法和BlockingQueue(阻塞队列)有什么区别?你怎么理解?
1.wait/notify是Object提供的native方法,可以用来线程之间的通信 。wait/notify结合synchronized可以实现一个线程安全的消息队列 。2、BlockingQueueeBlockingQueue是JDK提供的线程安全的消息队列,对增加、删除、获取提供了四种的操作:1、阻塞(put、take)2、抛异常(add,remove)3、阻塞等待超时(offer,poll)4、返回特殊值(offer,poll)BlockingQueue是个接口,JDK也提供了相应的实现,实现中主要使用Lock和Condition,Condition有await和signal方法,类似wait和notify方法 。
想要了解Lock的机制或者自己要实现一个锁,就得了解AQS(AbstractQueuedSynchronizer)是什么了,Lock的具体实现ReentrantLock,ReadLock,WriteLock都是基于AQS实现的,这里暂时不说AQS了,说下 BlockingQueue具体的几个实现:1、ArrayBlockingQueue:有界队列,底层是数组2、LinkedBlockingQueue:无界队列,底层是个单向链表3、 SynchronousQueue:同步队列,不提供任何容器来存放数据4、PriorityBlockingQueue:优先级无界队列,底层是二叉树最小堆5、DelayQueue:支持延时获取元素的无界阻塞队列 。
推荐阅读
- uiso,UltraISO软碟通中文官方网站
- Semiconductor,Microsemi
- 何庭波,华为董事会成员
- 新闻包括哪些体裁
- 狗高烧药吃多了怎么办,狗狗发烧怎么办
- 纯种普通萨摩耶多少钱,萨摩耶多少钱一只
- 玉米几月份成熟
- 新疆克州全称是什么
- 果子狸是几级保护动物吗
- 京东商城lg g3什么时间上市?g2几时降价?