我编写了一个名为T的线程类。

我的目的是确保一次仅运行一个线程对象。

因此,在调用线程对象时,它将检查一个称为BUSY的 boolean 标志。

我的问题是

private static AtomicBoolean BUSY = new AtomicBoolean(false);


private static boolean BUSY = false;

我认为如果使用“静态”,则所有对象将仅检查一个BUSY boolean 变量,以确保仅运行一个线程对象。

最佳答案

您必须至少使 boolean 变量volatile和AtomicBoolean变量final才能具有可比较的解决方案。完成之后,您的用例将没有任何区别。

如果使用AtomicBooleangetAndSetcompareAndSet方法(将一个读操作和一个写操作组合到一个原子整体中),就会产生区别,而对volatile而言,这些方法不是原子的。

关于Java:锁定线程时,AtomicBoolean和静态 boolean 变量之间有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12035176/

10-10 06:29