如何在java中比较AtomicBoolean和布尔值

Bar*_*ttt 4 java multithreading java.util.concurrent atomicboolean

我正在尝试使用以下代码在 java 中的多线程应用程序中部署 TTAS:

AtomicBoolean state= new AtomicBoolean(false);
void lock(){
    while(true)
    {
      while(state.get())
      {
        if(!state.getAndSet(true))
        return;
      }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试旋转它的值时,我如何比较状态的值以检查它是真还是假,而每次遇到错误,说我正在尝试比较两个不同变量的类型?经验:

Lock lock = new Lock();
if(lock.state==true) // error ! 
{
   //do something
}
Run Code Online (Sandbox Code Playgroud)

谢谢你!

Jon*_*eet 5

但是我怎样才能比较状态的值来检查它是真还是假

你只需要打电话get()

if (lock.state.get())
Run Code Online (Sandbox Code Playgroud)

鉴于您已经在while循环中使用它,我很困惑为什么您之前没有看到它:

while(state.get())
Run Code Online (Sandbox Code Playgroud)