主线程和子线程均循环10次,两者交替运行50次

来源:互联网 发布:网络节点是什么意思 编辑:程序博客网 时间:2024/05/23 15:07

我们应该时时保持面向对象编程的思想,可以将主子线程封装到一个类中(类中的方法是两个有关联的方法)

,使用标记变量可以人为的控制线程的执行。


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 blocke.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 blocke.printStackTrace();}}for(int j = 0;j < 10;++ j){System.out.println("主线程第"+i+"轮次:"+j);}mainLineStart = false;this.notify();}}


0 0