多线程任务调度与同步机制解析
1. 工作窃取双端队列(Work - Stealing Dequeues)
工作窃取算法是多线程任务调度中的一种重要策略。在该算法中,空闲线程会从其他线程的任务队列中窃取任务。这里介绍了 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;
}
Run
多线程调度与同步机制详解
超级会员免费看
订阅专栏 解锁全文
10万+

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



