/**
* 子线程先循环十次,主线程在循环20次,再子线程循环十次,主线程循环20次,如此循环50次
* @author llj
*
*/
public class ThreadTest {
public static void main(String[] args) {
Syn syn = new Syn();
new Thread(new Runnable() {
@Override
public void run() {
for(int i=0; i<50; i++) {
syn.child();
}
}
}).start();
for(int i=0; i<50; i++) {
syn.main();
}
}
}
class Syn{
private boolean temp = true;
public synchronized void main() {
if(temp) {
try {
this.wait();//导致当前线程等待,直到另一个线程调用该对象的 notify()方法或 notifyAll()方法
} catch (InterruptedException e) {
e.printStackTrace();
}
}
for(int i=0; i<20; i++) {
System.out.println("主线程"+i);
}
temp = true;
this.notify();//唤醒正在等待对象监视器的单个线程。
}
public synchronized void child() {
if(!temp) {
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
for(int j=0; j<10; j++) {
System.out.println("子线程"+j);
}
temp = false;
this.notify();
}
}
线程:子线程先循环十次,主线程在循环20次,再子线程循环十次,主线程循环20次,如此循环50次
最新推荐文章于 2023-01-04 17:48:08 发布