线程安全队列BlockingQueue
用法跟普通队列没有区别,只是加入了多线程支持。
这里主要说说add和put,以及poll和take的区别:
add和put都是用来忘队列里面塞东西的,而poll和take都是用来取队列的头元素的。
下面看下声明:
经过实际测试,结果如下:
总结:add和poll是非阻塞的,put和take是阻塞的。
add会返回插入队列的结果,成功返回true,失败返回false, put不会返回结果,因为BlockingQueue的长度是在创建这个队列的时候就设定好了的,当队列已经满了的时候,
add会跑出异常,而put则会阻塞直到插入成功。
poll和take的区别类似, 当队列为空时,take会阻塞至取到元素为止,而poll会返回null值。