我自己写的
package cn.itcast.test;
/**
* @Author fandayong001
* @Date 2021-08-06
* @description 按照顺序打印121212121212121212d
*/
public class Test25My {
static final Object lock = new Object();
volatile static boolean t2runned = false;
public static void add1(){
synchronized (lock){
while(t2runned){
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
t2runned = true;
lock.notifyAll();
System.out.println("1");
}
}
public static void add2(){
synchronized (lock){
while(!t2runned){
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
t2runned = false;
lock.notifyAll();
System.out.println("2");
}
}
public static void main(String[] args) {
new Thread(()->{
add1();
}).start();
new Thread(()->{
add2();
}).start();
}
}
用wait和notify同步很简单这个。还可以用awai和singnal
---04--79---
---04--80---
这个循环打印的代码是十分重要的。
我自己写的:
---04--81----
第一步:lock.newCondition();
第二步:一上来就进入各自的休息室
---131---
park和unpark去解决的代码:
LockSupport是不可重入的:https://blog.csdn.net/aitangyong/article/details/38373137
---132---
小结
---133---