AtomicBoolean做了哪些volatile boolean不能做到的事情?
AtomicBoolean做了哪些volatile boolean不能做到的事情?
原子/挥发/同步内部是如何工作的?
下面的代码块有什么区别?
代码1
private int counter;
public int getNextUniqueIndex() {
return counter++;
}
代码2
private AtomicInteger counter;
public int getNextUniqueIndex() {
return counter.getAndIncrement();
}
代码3
private volatile int counter;
public int getNextUniqueIndex() {
return counter++;
}
挥发物以以下方式工作吗?是
volatile int i = 0;
void incIBy5() {
i += 5;
}
相当于
Integer i = 5;
void incIBy5() {
int temp;
synchronized(i) { temp = i }
synchronized(i) { i = temp + 5 }
}
我认为两个线程不能同时进入同步块…我说的对吗?如果这是真的,那么如何atomic.incrementAndGet()工作没有同步?它是否线程安全?
内部读取和写入volatile变量/原子变量之间的区别是什么?我在一些文章中读到,线程有一个变量的本地副本-那是什么?
可能的重复: 为什么挥发性存在?
我从来没用过,但我想知道人们为什么要用它?它到底是做什么的?我搜索了论坛,我发现只有c#或Java主题。
为什么C中需要挥发性?它的用途是什么?它会做什么?
假设一个类有一个公共int计数器字段,可以被多个线程访问。这个int值只能自增或自减。
要增加这个字段,应该使用哪种方法,为什么?
锁(this.locker) this.counter + +; 联锁。增量(ref this.counter); 将counter的访问修饰符更改为public volatile。
现在我已经发现了volatile,我已经删除了许多lock语句和Interlocked的使用。但有理由不这么做吗?
今天工作时,我在Java中遇到了volatile关键字。不是很熟悉,我找到了这个解释。
鉴于那篇文章详细解释了所讨论的关键字,您曾经使用过它吗?或者您曾经看到过以正确方式使用该关键字的情况吗?