JAVA多執行緒實現子執行緒迴圈10次,接著主執行緒迴圈100,接著又回到子執行緒迴圈10次,接著再回到主執行緒又迴圈100,如此迴圈50次
阿新 • • 發佈:2019-09-14
package com.study;
public class Demo001 {
public static void main(String[] args) {
Demo001 demo = new Demo001();
final OutPutClass putPutClass = demo.new OutPutClass();
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
for (int index = 1; index <= 50; index++) {
putPutClass.sub(index);
}
}
});
thread.start();
//由於main方法下面也是一個執行緒,並且是主執行緒
for (int index = 1; index <= 50; index++) {
putPutClass.main(index);
}
}
class OutPutClass {
private boolean isSync = true;
public synchronized void sub(int j) {
while(!isSync){
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
for(int index = 1;index <= 10;index ++){
System.out.println("當前執行緒【" + Thread.currentThread().getName() + "】正在執行sub,執行次數為:" + index + ",迴圈次數為:" + j);
}
isSync = false;
this.notify();
}
public synchronized void main(int j) {
while(isSync){
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
for(int index = 1;index <= 100;index ++){
System.out.println("當前執行緒【" + Thread.currentThread().getName() + "】正在執行main,執行次數為:" + index + ",迴圈次數為:" + j);
}
isSync = true;
this.notify();
}
}
}