【例5.1】构造三个线程对象,分别输入70以内2/3/5的倍数。
public class Ch_5_1 {
public static void main(String[] args) {
//main是特殊线程,最先启动,且只有当所有线程均结束的时候,才能结束
System.out.print("main开始");
T t2,t3,t5;
t2=new T(2,70);t3=new T(3,70);t5=new T(5,70);//构造线程对象
t2.start();t3.start();t5.start();//启动线程生命周期,内部包含一连串自动调用,首要run()
System.out.printf(" 当前共有【%d】个线程# " ,Thread.activeCount());
System.out.print("main结束");
}
}
class T extends Thread{//T是线程类
private int data;private final int max;
T(int x,int m){data=x;max=m;}
//线程的核心代码,这段代码必须是重写java.lang.Runnable接口中的run();
//public void start() {run();}//主动的调用run()不到线程并发的作用 千万:不要重写start();
//不要主动调用run() Thread的start()会自动调用本地方法start0(),即线程不能跨平台运行的
public void run(){//必须是这样,类似toString
//run是线程执行的入口,类似main
//功能:输出max以内data的倍数
for(int i=1;i*data<max;i++)
System.out.print(i*data+" ");
}
}
//注意:单个线程是顺序输出的,线程占用的时间很短,线程切换任意,次序任意
//共有资源是显示器
public void start() {run();}结果辨析