1
我需要澄清一个与多线程相关的问题。我有线程获取信号量,并在一段时间后释放它。一旦它释放了第一个信号量,它就获得第二个信号量,然后释放它。两个信号量都保护了线程run()方法中的不同代码。类似下面:带信号量的多线程
public void run() {
System.out.println("Step 1");
semaphoreA.acquire();
// Run for a while
semaphoreA.release();
// Run for a while
semaphoreB.acquire();
System.out.println("Step 2");
// Run for a while
semaphoreB.release();
}
所以,在没有许可证的semaphoreB,线程等待。但是,当许可证可用时,我不应该在控制台上看到“步骤2”吗?或者,线程和信号量如何工作?
我想了解如果一个线程刚刚通知可用的信号量许可会发生什么。该线程是否会从头开始?或从它剩下的点开始?
实例化信号量的代码? – vanza
这就是它应该如何工作。你看到了什么。具体的问题更容易回答。 –
你好,保罗!我看到'步骤1'。我想要线程移动到第2步,通过获取信号量B。 –