代码一:
class MyThread extends Thread{ // 继承Thread类,作为线程的实现类
private String name ; // 表示线程的名称 public MyThread(String name){ this.name = name ; // 通过构造方法配置name属性 } public void run(){ // 覆写run()方法,作为线程 的操作主体 for(int i=0;i<10;i++){ System.out.println(name + "运行,i = " + i) ; } } }; public class ThreadDemo01{ public static void main(String args[]){ MyThread mt1 = new MyThread("线程A ") ; // 实例化对象 MyThread mt2 = new MyThread("线程B ") ; // 实例化对象 mt1.run() ; // 调用线程主体 mt2.run() ; // 调用线程主体 } };
run方法执行是有顺序的,结果如下:
线程A 运行,i = 0 线程A 运行,i = 1 线程A 运行,i = 2 线程A 运行,i = 3 线程A 运行,i = 4 线程A 运行,i = 5 线程A 运行,i = 6 线程A 运行,i = 7 线程A 运行,i = 8 线程A 运行,i = 9 线程B 运行,i = 0 线程B 运行,i = 1 线程B 运行,i = 2 线程B 运行,i = 3 线程B 运行,i = 4 线程B 运行,i = 5 线程B 运行,i = 6 线程B 运行,i = 7 线程B 运行,i = 8 线程B 运行,i = 9
代码二:
运行结果:class MyThread extends Thread{ // 继承Thread类,作为线程的实现类 private String name ; // 表示线程的名称 public MyThread(String name){ this.name = name ; // 通过构造方法配置name属性 } public void run(){ // 覆写run()方法,作为线程 的操作主体 for(int i=0;i<10;i++){ System.out.println(name + "运行,i = " + i) ; } } }; public class ThreadDemo02{ public static void main(String args[]){ MyThread mt1 = new MyThread("线程A ") ; // 实例化对象 MyThread mt2 = new MyThread("线程B ") ; // 实例化对象 mt1.start() ; // 调用线程主体 mt2.start() ; // 调用线程主体 } };
线程A 运行,i = 0 线程B 运行,i = 0 线程A 运行,i = 1 线程A 运行,i = 2 线程B 运行,i = 1 线程A 运行,i = 3 线程B 运行,i = 2 线程A 运行,i = 4 线程B 运行,i = 3 线程A 运行,i = 5 线程B 运行,i = 4 线程A 运行,i = 6 线程B 运行,i = 5 线程A 运行,i = 7 线程B 运行,i = 6 线程A 运行,i = 8 线程B 运行,i = 7 线程A 运行,i = 9 线程B 运行,i = 8 线程B 运行,i = 9