我编写了一个名为T的线程类。
我的目的是确保一次仅运行一个线程对象。
因此,在调用线程对象时,它将检查一个称为BUSY的 boolean 标志。
我的问题是
private static AtomicBoolean BUSY = new AtomicBoolean(false);
和
private static boolean BUSY = false;
我认为如果使用“静态”,则所有对象将仅检查一个BUSY boolean 变量,以确保仅运行一个线程对象。
最佳答案
您必须至少使 boolean 变量volatile
和AtomicBoolean变量final
才能具有可比较的解决方案。完成之后,您的用例将没有任何区别。
如果使用AtomicBoolean
的getAndSet
或compareAndSet
方法(将一个读操作和一个写操作组合到一个原子整体中),就会产生区别,而对volatile
而言,这些方法不是原子的。
关于Java:锁定线程时,AtomicBoolean和静态 boolean 变量之间有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12035176/