在Core Java:第1卷基础-> MultiThreading一章中。
作者写道:
“所有现代台式机和服务器操作系统都使用抢占式调度。但是,诸如手机之类的较小设备可能会使用协作式调度。
我知道两种调度类型的定义/工作原理,但是想了解在较小的设备中为什么优先选择协作调度而不是抢占式调度的原因。
谁能解释原因?
在Java Collection类中,我经常注意到如下代码
//ArrayDeque
public E pollFirst() {
int h = head;
@SuppressWarnings("unchecked")
E result = (E) elements[h];
// Element is null if deque empty
if (result == null)
return null;
elements[h] = null; // Must null out slot
head = (h + 1) & (elements.length - 1);
return result;
}
Run Code Online (Sandbox Code Playgroud)
怎么head = (h + 1) & (elements.length - 1);办?为什么在这里使用&运算符以及它的用途是什么.
我的问题不是如何和有效,但它在这里有什么用处.
有人能解释一下吗?