4

次のコードを使用して、Java のマルチスレッド アプリケーションに TTAS をデプロイしようとしています。

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

しかし、状態の値を比較して、それが真か偽かを確認するにはどうすればよいですか? 2 つの異なる変数の型を比較しようとしているというエラーが発生するたびに、その値をスピンしようとすると? 式:

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

ありがとう!

4

1 に答える 1

4

しかし、状態の値を比較して、それが真か偽かを確認するにはどうすればよいですか

あなたはただ呼び出す必要がありますget()

if (lock.state.get())

whileループで既に使用していることを考えると、なぜこれを以前に見なかったのか、私は混乱しています:

while(state.get())
于 2013-05-24T18:08:47.687 に答える