amp*_*ent 0 java queue multithreading thread-safety
我ConcurrentLinkedQueue在一组线程处理它们之前使用a 来排队元素:
public class AsyncActionQueue implements Serializable {
...
private Queue<QueuedAction> queue;
public AsyncActionQueue() {
this.queue = new ConcurrentLinkedQueue<>();
}
...
private class QueueProcessor implements Runnable {
private boolean isKilled = false;
public void run() {
while(!isKilled) {
QueuedAction action = queue.remove();
Run Code Online (Sandbox Code Playgroud)
queue.remove()如果队列中没有更多元素,我认为会返回null,而是我得到一个NoSuchElementException.
这是一种情况,其中队列是单例,并且可以使用弹性数量的线程来清空它.在尝试删除之前,线程检查队列中是否有元素的最佳方法是什么?我应该检查是否queue.size() > 0,这意味着线程安全吗?
| 归档时间: |
|
| 查看次数: |
49 次 |
| 最近记录: |