1

スレッドが特定の処理を行っている間、実行中の他のすべてのスレッドを一時停止することはできますか? 私の質問をするために、次の方法があると仮定しましょう

public void doActions()
{
  ......
  ......
  ......
  if(count == 30)
  {
    //This is where I want to pause all other running threads

  }
  ......
  ......
  ......
}

よろしく!

4

2 に答える 2

0
  1. を試すことができCountDownLatchます。これは、他のプロセスが開始される前にいくつかのリソースにアクセスしたいシナリオで役立ちます。

  2. Semaphore を使用して、一度に 1 つのスレッドのみにアクセスできるようにすることもできます。

    セマフォ s = 新しいセマフォ(1);

于 2012-06-10T10:07:10.673 に答える
0

最近、別の質問に対する可能な解決策としてPauseableThreadを投稿しました。必要なものとは少し異なりますが (1 つのスレッドを停止できる他のスレッドが多数ある間に、他の多数のスレッドを停止する 1 つのスレッドが必要です)、探しているものに変換するのは非常に簡単です。

他のスレッドは、定義済みのポイントでのみ一時停止することに注意してください。現在の場所で停止するわけではありません。

于 2012-06-10T10:08:13.500 に答える