Thread.start()和Thread.run()的區別
阿新 • • 發佈:2019-02-09
public class RunAndStart { public static void main(String[] ar) throws InterruptedException { /*** * 1.只有start()才真正實現了多執行緒執行。<br> * 這時無需等待run方法體程式碼執行完畢,不同執行緒的run()方法交替執行;<br> * 通過呼叫Thread類的start()方法來啟動一個執行緒, 這時此執行緒是處於就緒狀態, 並沒有執行。<br> * 然後通過此Thread類呼叫方法run()來完成其執行操作的, <br> * 這裡方法run()稱為執行緒體,它包含了要執行的這個執行緒的內容,Run方法執行結束,此執行緒終止。 <br> * <br> * <br> * 2.如果只是呼叫run()方法那麼程式還是同步執行。<br> * 程式還是要順序執行,要等待一個run()執行完畢後,才可繼續執行下面的程式碼;<br> * 程式執行路徑還是隻有一條, 這樣就沒有達到寫執行緒的目的。 */ for (int i = 0; i < 3; i++) { MyThread t = new MyThread(); t.run(); // t.start(); } while (true) { System.out.println("main thread....."); TimeUnit.SECONDS.sleep(1); } } } class MyThread extends Thread { private static int count = 0; private int NO = 0; public MyThread() { this.NO = count++; } @Override public void run() { long time = System.currentTimeMillis(); while (System.currentTimeMillis() - time < 5000) { System.out.println(NO + "——Running..."); try { // Thread.sleep(1000); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }