题目
假设有这么一个类:
1 | class ZeroEvenOdd { |
相同的一个 ZeroEvenOdd
类实例将会传递给三个不同的线程:
- 线程 A 将调用
zero()
,它只输出 0 。 - 线程 B 将调用
even()
,它只输出偶数。 - 线程 C 将调用
odd()
,它只输出奇数。
每个线程都有一个 printNumber
方法来输出一个整数。请修改给出的代码以输出整数序列 010203040506
… ,其中序列的长度必须为 2n。
示例1:
1 | 输入:n = 2 |
示例2:
1 | 输入:n = 5 |
解法
解法一:
使用Lock和Condition
Java
1 | class ZeroEvenOdd { |
JAVA
解法二:
使用Semaphore
Java
1 | class ZeroEvenOdd { |