简单的无锁堆栈
最近发现了这样的java-concurrency面试任务:
使用两种方法编写简单的无锁Stack:push和pop。
我做了专注:
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面试新手。
没有找到相关结果
已邀请:
4 个回复
臀博
慰泥悍瓶
结乳
代码是自我解释的。如果有人需要解释,请告诉我。 堆栈按照下图形成:
目浆搽