实例-Leetcode并发编程
leetcode-1114 按序打印
leetcode只要 方法1 2 3顺序执行,我对其作了修改,1-2-3-1-2-3循环周期打印
通过两个volatile共享内存变量实现线程间信息交流。
当first和seconde都为false时,first里面的printFirst()才能执行,然后通知printSecond()方法可以执行了。
class Foo {
void Foo(){
}
volatile boolean first = false;
volatile boolean second = false;
public void first(Runnable printFirst) throws InterruptedException{
while (first || second) {
}
// printFirst.run() outputs "first". Do not change or remove this line.
printFirst.run();
first = true;
}
public void second(Runnable printSecond) throws InterruptedException{
while (!first) {
}
// printSecond.run() outputs "second". Do not change or remove this line.
printSecond.run();
second = true;
}
public void third(Runnable printThird) throws InterruptedException{
while (!second) {
}
// printThird.run() outputs "third". Do not change or remove this line.
printThird.run();
first = false;
second = false;
}
}
京公网安备 11010502036488号