我正在努力了解信号量。如果我想重复打印@ @}}}之类的东西(每个字符后面都有\ n),我怎么能用信号量一次只打印1个可见字符呢?我知道如何使用每个信号量的相似代码打印出一个字符:
public static class PrintB implements Runnable // similar class for each semaphore
{
public void run(){
for (int i=0; i<count; i++) { // printing lots to see functionality
try {
printableB.acquire(); // the semaphore
}
catch (InterruptedException ex) {
ex.printStackTrace();
}
System.out.printf( "%s\n", "/"); // Need 2 /'s
printableC.release(); // handled B's print, move to C
}
}
}
这里的问题是我的其余代码只会打印“@ /}”而不是“@ //}}}”。我不想只是放入其他打印语句来完成此任务。我想只使用与信号量相关的语句,如.acquire()和.release()(毕竟我正试图了解它们!)。有任何想法吗?谢谢!