Hex*_*xor 5 java multithreading synchronization boolean thread-safety
我写了一个名为T的线程类.
我的目的是确保一次只运行一个线程对象.
因此,当调用线程对象时,它将检查一个名为BUSY的布尔标志.
我的问题是什么是不同的
private static AtomicBoolean BUSY = new AtomicBoolean(false);
Run Code Online (Sandbox Code Playgroud)
和
private static boolean BUSY = false;
Run Code Online (Sandbox Code Playgroud)
我想如果使用'static',所有对象只会检查一个BUSY布尔变量,这样才能确保只有一个线程对象在运行.
您必须至少创建布尔变量volatile和AtomicBoolean变量final才能获得可比较的解决方案.在您这样做之后,您的用例将没有任何区别.
如果你使用AtomicBoolean's' getAndSet或者compareAndSet方法,将一个读取动作和一个写入动作组合成一个原子整体,那么就会产生差异,当这些动作完成时,它们不是原子的volatile.
| 归档时间: |
|
| 查看次数: |
3180 次 |
| 最近记录: |