最近、次のような java-concurrency インタビュー タスクが見つかりました。
プッシュとポップの 2 つのメソッドを使用して、シンプルなロックフリー スタックを作成します。
私は集中しました:
import java.util.concurrent.atomic.AtomicInteger;
public class Stack {
private AtomicInteger count = new AtomicInteger(-1);
private Object[] data = new Object[1000];
public void push(Object o) {
int c = count.incrementAndGet();
data[c] = o;
}
public Object pop() {
Object top;
int c;
while (true) {
c = count.get();
if (c == -1) return null;
top = data[c];
if (count.compareAndSet(c, c-1))
return top;
}
}
}
予想されたアプローチに似ていますか?または、「ロックフリースタック」は別の意味ですか? Javaインタビューの初心者を助けてください。