我在处理同步java线程时遇到问题,应用wait和notify ..
我想知道如何在一个程序中实现这些,我可以交替打印答案..例如,person1将计数数字1-5以及person2,输出应该是这样的。
person1 count 1
person2 count 1
person1 count 2
person2 count 2
person1 count 3
person2 count 3
person1 count 4
person2 count 4
person1 count 5
person2 count 5
谢谢你们。
答案 0 :(得分:1)
您可以通过两种方式轻松完成此任务:
传递'打印令牌'使用两个信号量的线程之间:线程1打印,信号信号量A,等待信号量B然后循环。线程2等待信号量A,打印信号,信号量B和循环信号。
编写内嵌的单线程代码。
答案 1 :(得分:0)
不要使用等待和通知。使用同步块。
要深入解释Java Monitor的工作原理,包括代码示例,您可以访问:http://www.artima.com/insidejvm/ed2/threadsynch.html
答案 2 :(得分:0)
线程程序的全部目的是线程的异步操作。这就是你如何获得性能提升,因为不同的任务可以同时在不同的CPU /内核上工作,没有必须相互同步。为了强制进行这种同步,锁定步骤输出是按照定义强制线程执行非典型操作。
@ Martin的回答提供了让它发挥作用的替代方案。