不多说直接上代码
一个普通的线程类:
public class MyThread extends Thread {
private String myThreadName;
public MyThread(String myThreadName) {
this.myThreadName=myThreadName;
}
@Override
public void run() {
for (int i = 0; i < 10; i++) {
try {
System.out.println(myThreadName+"====="+i);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
main方法测试一,实例化两个线程类,并调用run方法:
public static void main(String[] args) {
Thread t=new MyThread("线程一");
Thread t1=new MyThread("线程二");
t.run();
t1.run();
System.out.println("ok");
}
测试结果:
线程一=====0
线程一=====1
线程一=====2
线程一=====3
线程一=====4
线程一=====5
线程一=====6
线程一=====7
线程一=====8
线程一=====9
线程二=====0
线程二=====1
线程二=====2
线程二=====3
线程二=====4
线程二=====5
线程二=====6
线程二=====7
线程二=====8
线程二=====9
ok
main方法测试二,实例化两个线程类,并调用start:
public static void main(String[] args) {
Thread t=new MyThread("线程一");
Thread t1=new MyThread("线程二");
t.start();
t1.start();
System.out.println("ok");
}
测试结果:
线程一=====0
线程一=====1
线程一=====2
线程一=====3
线程一=====4
线程二=====0
ok
线程二=====1
线程二=====2
线程二=====3
线程二=====4
线程二=====5
线程一=====5
线程二=====6
线程二=====7
线程二=====8
线程二=====9
线程一=====6
线程一=====7
线程一=====8
线程一=====9
测试一和测试二的记过 很清楚看到,调用run方法后,并不是多线程的状态,而是同步状态,t.run()执行后,才会执行t1.run(), 最后执行ok打印
而测试二中,可以看到,两个线程在交叉执行,并且ok提前打印出来,这才有多线程的概念。