程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java中thread線程start和run的差別

java中thread線程start和run的差別

編輯:關於JAVA

java中thread線程start和run的差別。本站提示廣大學習愛好者:(java中thread線程start和run的差別)文章只能為提供參考,不一定能成為您想要的結果。以下是java中thread線程start和run的差別正文


比來看到一個標題,代碼以下:


public static void main(String args[]) {
Thread t = new Thread() {
public void run() {
pong();
}
};
t.run();
System.out.println("ping");
}
static void pong() {
System.out.println("pong");
}

問,成果會輸入甚麼?

我運轉了許多次,成果都是pong ping。後來終究發明了症結點地點,線程對象t,挪用的不是start()辦法,而是run()辦法。後來我開斷點形式debug,發明挪用run()辦法,全部法式只要一個線程,而挪用start()辦法以後,法式就會多出一個線程。這時候才有和主線程爭cpu,能夠湧現多種成果的情形,但因為上面輸入辦法很快就被履行了,所以根本上都是“ping pong”的輸入。

所以run()和start()的差別就是:
run()是Runnable接口中界說的一個辦法,是為了讓客戶法式員在這個辦法裡寫本身的功效代碼的。直接挪用和通俗的類挪用本身的成員辦法是沒有任何差別的。
而start()則是線程開端運轉的標記,當這個辦法被挪用後,法式中才會多出一個自力的線程,接著就是履行run()辦法。

所以我認為,本身要寫零丁的線程,最好照樣繼續Thread來做,假如是完成接口的話,到主線程裡,照樣要new Thread(new YourRunnableClass())來挪用,感到很不便利。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved