執行緒Thread的t.start()實現的是非同步的執行緒,t.run()方法實現的是同步執行緒;
阿新 • • 發佈:2018-11-03
package interview;
public class TestRun_Start extends Thread { public static void main(String[] args) { TestRun_Start ta = new TestRun_Start(); Thread t = ta.new TestThread2("新建執行緒1"); { //啟動執行緒不一定就馬上執行 t.start(); System.out.println(currentThread() + "\t" + "1"); //當實現介面的物件Runnable被用來建立一個執行緒,啟動執行緒使物件的run在獨立執行的執行緒中呼叫的方法。 //方法run的一般合同是它可以採取任何行動。 //直接呼叫執行緒類的run(),會被當做普通的函式呼叫,程式依舊是主執行緒,此時的run啟動的就是當前的執行緒main執行緒。 //也就是說start()方法才能非同步呼叫run(),直接呼叫時同步的,無法達到多執行緒的目的; t.run(); System.out.println(currentThread() + "\t" + "2"); } } class TestThread2 extends Thread { public TestThread2(String n) { super(n); } @Override public void run() { System.out.println(Thread.currentThread() + "\t" + "3"); } }}