多线程循环打印输出问题(二)
程序员文章站
2024-03-21 13:06:46
...
//保证优先级
public volatile static boolean flag =true;
public static void main(String[] args) {
//控制的锁
final Object lock =new Object();
new Thread(new Runnable(){
@Override
public void run() {
synchronized(lock){
flag=false;
for(int i=0;i<5;i++){
System.out.println("a");
try {
lock.notify();
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
lock.notify();
}
}}).start();
new Thread(new Runnable(){
@Override
public void run() {
synchronized(lock){
//保证a先输出
if(flag){
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
for(int i=0;i<5;i++){
System.out.println("b");
lock.notify();
try {
//输出后让线程等待
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}}).start();
}
相比运用同步器cyclicbarrier来说,虽然功能实现了,但是代码比较繁琐
上一篇: 多线程循环打印输出问题(一)