在线程做某种尝试时暂停其他线程?

时间:2012-06-10 07:23:06

标签: java multithreading

当线程执行特定操作时,是否可以暂停所有其他线程运行?为了提出我的问题,我假设我有以下方法

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

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

问候!

2 个答案:

答案 0 :(得分:0)

  1. 您可以尝试使用CountDownLatch,这可以帮助您在其他流程开始之前访问少量资源的情况。

  2. 您也可以尝试使用信号量一次只能访问一个线程

    Semaphore s = new Semaphore(1);

答案 1 :(得分:0)

我最近发布了PauseableThread作为另一个问题的可能解决方案。虽然它的工作方式与你想要的略有不同(你需要一个线程可以阻止其他一些线程,但是它有许多其他线程可以阻止一个线程),把它变成你想要的东西应该很简单。

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