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 一次只访问一个线程

    信号量 s = new Semaphore(1);

于 2012-06-10T10:07:10.673 回答
0

我最近发布了一个PauseableThread作为另一个问题的可能解决方案。尽管它的工作方式与您想要的略有不同(您需要一个线程来停止许多其他线程,而它有许多其他线程可以停止一个线程),但将其转换为您正在寻找的应该非常简单。

请注意,其他线程只会在预定义的点暂停,它们不会停止在它们所在的位置。

于 2012-06-10T10:08:13.500 回答