Java并发编程学习随笔 (一) 使用run() 和 start()的差别
java多线程run()和start()的区别
当你启动线程,使用start(),系统会把run()方法当成线程执行体来处理,这是正常的,也是正确的情况。但是,当你启动线程时,调用run()方法,系统run()方法会立即执行,但是这时候系统会把run()方法当成普通的方法,线程对象也当成一个普通对象。
就是说 start 才是真正的启动了一个线程,run 只是座位当前线程的一个方法在执行
此时运行情况为 A /B/C 三个线程轮流执行:
public class ThreadTest extends Thread { private int a =1; @Override public void run() { // TODO Auto-generated method stub super.run(); while(true) { System.out.println("由"+this.currentThread().getName()); } } public ThreadTest(String name) { super(); this.setName(name); } }
public class RunTest { public static void main(String[] args) { ThreadTest threadTest1 = new ThreadTest("A"); ThreadTest threadTest2 = new ThreadTest("B"); ThreadTest threadTest3 = new ThreadTest("C"); threadTest1.start(); threadTest2.start(); threadTest3.start(); } }
使用run()的情况