线程相关(三)run 和 start
2019-03-08 本文已影响0人
云鲸鱼rain
先上代码来看两者区别
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是线程执行的方法,创建进线程。
再从底层看:



