Как сравнить AtomicBoolean с логическим значением в Java

Я пытаюсь развернуть TTAS в многопоточном приложении в Java, используя этот код:

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

но как я могу сравнить значение состояния, чтобы проверить, является ли оно истинным или ложным, когда я пытаюсь прокрутить его значение, в то время как я получаю каждый раз ошибку, сообщающую, что я пытаюсь сравнить тип двух разных переменных? ехр:

Lock lock = new Lock();
if(lock.state==true) // error ! 
{
   //do something
}

благодарю вас!

1 ответ

Решение

но как я могу сравнить значение состояния, чтобы проверить, является ли оно истинным или ложным

Вам просто нужно позвонить get():

if (lock.state.get())

Я смущен тем, почему вы не видели этого раньше, учитывая, что вы уже используете его в своем while цикл:

while(state.get())
Другие вопросы по тегам