Как сравнить 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())