zoukankan      html  css  js  c++  java
  • 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()的情况

    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并发编程 LockSupport源码分析
    [No000010F]Git8/9-使用GitHub
    [No000010E]Git7/9-标签管理
    [No000010D]Git6/9-分支管理
    [No000010C]Git5/9-远程仓库
    [No000010B]Git4/9-时光机穿梭
    [No000010A]Git3/9-创建版本库
    [No0000109]Git2/9-安装Git
    [No0000108]Git1/9-Git简介与入门
    [No000011D].NETCORE1/19-.NET Core 指南
  • 原文地址:https://www.cnblogs.com/dayao666/p/12027301.html
Copyright © 2011-2022 走看看