【问题标题】:How to compare AtomicBoolean with boolean value in java如何在java中比较AtomicBoolean和布尔值
【发布时间】:2013-05-20 10:00:18
【问题描述】:

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

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
}

谢谢!

【问题讨论】:

  • AtomicBoolean.compareAndSet 不是你需要的吗?
  • @user1121883,是的!这是正确的!这是我应该使用的!谢谢!

标签: java multithreading java.util.concurrent atomicboolean


【解决方案1】:

但是我如何比较状态的值来检查它是真还是假

您只需拨打get():

if (lock.state.get())

鉴于您已经在 while 循环中使用它,我不明白为什么您之前没有看到这个:

while(state.get())

【讨论】:

  • 当你 48 小时不睡觉时会发生这种情况 :) @Jon Skeet
  • 为什么我没想到... :) .. 谢谢@jon-skeet
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-05
  • 1970-01-01
  • 2019-08-18
  • 2013-09-12
  • 2019-03-29
  • 1970-01-01
相关资源
最近更新 更多