当线程执行特定操作时,是否可以暂停所有其他线程运行?为了提出我的问题,我假设我有以下方法
public void doActions()
{
......
......
......
if(count == 30)
{
//This is where I want to pause all other running threads
}
......
......
......
}
问候!
答案 0 :(得分:0)
您可以尝试使用CountDownLatch
,这可以帮助您在其他流程开始之前访问少量资源的情况。
您也可以尝试使用信号量一次只能访问一个线程
Semaphore s = new Semaphore(1);
答案 1 :(得分:0)
我最近发布了PauseableThread作为另一个问题的可能解决方案。虽然它的工作方式与你想要的略有不同(你需要一个线程可以阻止其他一些线程,但是它有许多其他线程可以阻止一个线程),把它变成你想要的东西应该很简单。
请注意,其他线程只会在预定义的点暂停,它们不会停留在原来的位置。