-6

我在处理同步 java 线程、应用等待和通知时遇到问题。

我想弄清楚如何在可以交替打印答案的程序中实现这些。例如,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

多谢你们。

4

3 回答 3

1

您可以通过两种方式轻松做到这一点:

  1. 使用两个信号量在线程之间传递一个“打印令牌”:线程 1 打印,发送信号量 A,等待信号量 B,然后循环。线程 2 等待信号量 A、打印、发送信号量 B 并循环。

  2. 编写内联的单线程代码。

于 2012-10-05T14:14:32.707 回答
0

不要使用等待和通知。使用同步块。

有关 Java 监视器如何工作的深入解释,包括代码示例,您可以访问此处:http ://www.artima.com/insidejvm/ed2/threadsynch.html

于 2012-10-05T13:54:31.623 回答
0

线程程序的全部目的是线程的异步操作。这就是您获得性能提升的方式,因为不同的任务可以同时在不同的 CPU/内核上工作,不必相互同步。为了强制这种同步,锁步输出按照定义强制线程做一些非典型的事情。

@Martin 的回答提供了使其正常工作的替代方法。

于 2012-10-05T14:51:48.537 回答