我们应该时时保持面向对象编程的思想,可以将主子线程封装到一个类中(类中的方法是两个有关联的方法)
,使用标记变量可以人为的控制线程的执行。
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.Timer;
import java.util.TimerTask;
import javax.print.attribute.standard.MediaName;
import javax.security.auth.Subject;
import javax.swing.plaf.nimbus.AbstractRegionPainter;
import org.omg.CORBA.PUBLIC_MEMBER;
class zz {
public static void main(String[] args) {
final Run running = new Run();
new Thread(
new Runnable() {
public void run() {
for(int i = 0;i < 50;++ i){
running.subLine(i);
}
}
}
).start();
for(int i = 0;i < 50;++ i){
running.mainLine(i);
}
}
}
class Run{
private boolean mainLineStart = true;
public synchronized void subLine(int i){
if(mainLineStart){
try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
for(int j = 0;j < 10;++ j){
System.out.println("子线程第"+i+"轮次:"+j);
}
mainLineStart = true;
this.notify();
}
public synchronized void mainLine(int i){
if(!mainLineStart){
try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
for(int j = 0;j < 10;++ j){
System.out.println("主线程第"+i+"轮次:"+j);
}
mainLineStart = false;
this.notify();
}
}