使用信号量了解线程同步

时间:2014-10-26 18:33:28

标签: java semaphore thread-synchronization

我正在努力了解信号量。如果我想重复打印@ @}}}之类的东西(每个字符后面都有\ 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()(毕竟我正试图了解它们!)。有任何想法吗?谢谢!

0 个答案:

没有答案