美文网首页
线程相关(三)run 和 start

线程相关(三)run 和 start

作者: 云鲸鱼rain | 来源:发表于2019-03-08 11:23 被阅读0次

先上代码来看两者区别

package test;

public class ThreadTest {
    
     public static void main(String args[]) {        
         ThreadSync syncThread1 = new ThreadSync();
         ThreadSync syncThread2 = new ThreadSync();
         Thread thread1 = new Thread(syncThread1, "SyncThread1");
         Thread thread2 = new Thread(syncThread2, "SyncThread2");
         thread1.run();
         thread2.start();
     }
}
package test;

public class ThreadSync implements Runnable{

    public void run() {
        function();
    }
    
    public synchronized static void function() {
        for (int i = 0; i < 5; i++) {
            try {
                System.out.println(Thread.currentThread().getName() + ":" + i);
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
main:0
main:1
main:2
main:3
main:4
SyncThread2:0
SyncThread2:1
SyncThread2:2
SyncThread2:3
SyncThread2:4

这个结果就已经说明了问题。
先从表面上看:run就是一个普通的方法,还是调用的主线程,并没有创建制定的新线程。start是线程执行的方法,创建进线程。
再从底层看

start方法.png start0.png JVM_StartThread.png new JavaThread.png

相关文章

网友评论

      本文标题:线程相关(三)run 和 start

      本文链接:https://www.haomeiwen.com/subject/klolpqtx.html