首页 > 编程语言 > 详细

Java并发编程学习随笔 (一) 使用run() 和 start()的差别

时间:2019-12-12 09:44:45      阅读:96      评论:0      收藏:0      [点我收藏+]

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()的情况

 

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.run();
		threadTest2.run();
		threadTest3.run();
	}

}

 

  

 

技术分享图片

Java并发编程学习随笔 (一) 使用run() 和 start()的差别

原文:https://www.cnblogs.com/dayao666/p/12027301.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!