题目
我们提供了一个类:
1 | class FooBar { |
两个不同的线程将会共用一个 FooBar 实例。其中一个线程将会调用 foo() 方法,另一个线程将会调用 bar() 方法。
请设计修改程序,以确保 “foobar” 被输出 n 次。
示例1:
1 | 输入: n = 1 |
示例2:
1 | 输入: n = 2 |
解法
解法一:
(超时)
while循环死等
JAVA
1 | class FooBar { |
解法二:
使用Condition做精准唤醒
Java
1 | class FooBar { |
解法三:
使用wait和notify
Java
1 | class FooBar { |
解法四:
使用CyclicBarrier
1 | class FooBar { |
解法五:
使用Semaphore
1 | class FooBar { |