多线程任务调度与同步机制解析
1. 工作窃取双端队列
1.1 双端队列方法实现
在多线程任务调度中,工作窃取双端队列是一种重要的数据结构。以下是 UnboundedDEQueue 类的 popTop() 和 popBottom() 方法的代码实现:
public Runnable popTop() {
int oldTop = top.get();
int newTop = oldTop + 1;
int oldBottom = bottom;
int size = oldBottom - oldTop;
if (size <= 0) return null;
Runnable r = tasks.get(oldTop);
if (top.compareAndSet(oldTop, newTop))
return r;
return null;
}
public Runnable popBottom() {
bottom--;
int oldTop = top.get();
int newTop = oldTop + 1;
int size = bottom - oldTop;
if (size < 0) {
bottom = oldTop;
return null;
}
Runnable r = tasks.get(bottom);
if (
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



