[J2SE] Thread的執行

看板java作者 (真呆)時間17年前 (2008/04/03 10:06), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/5 (看更多)
問個Thread執行的問題: public class ThreadTest extends Thread { public void run() { for(int i=0;i<11;i++) { System.out.println(getName()+":"+i); } } public static void main(String[] args) throws Exception { ThreadTest t1=new ThreadTest(); ThreadTest t2=new ThreadTest(); t1.start(); t2.start(); //t1.join(); //Thread.sleep(1000); for(int i=0;i<11;i++) { System.out.println("Main Thread"+":"+i); } } } 以上的code,有兩個建立出來的thread t1,t2和一個Main thread,各自都會印出0~10, 我剛測試,若code裡面有用t1.join(),則t1一定會先跑完,才會再跑Main thread,但 t1和t2仍是競爭的,沒有說誰會比誰先執行完。 所以我是否可說join是用來確保thread會比Main thread先執行完的一種方法? 另外,若我在程式中加入sleep()的方法,t1.sleep()、t2.sleep()、Thread.sleep()和 sleep() <----沒指定哪個thread,各是讓哪個Thread休息呢?哪個thread呼叫sleep就是 讓它自己休息嗎?或是不管誰呼叫sleep都是讓目前正在執行的thread休息? 先謝謝了~~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.87.151.40 ※ 編輯: nf7series 來自: 219.87.151.40 (04/03 10:21)
文章代碼(AID): #17z3k8nD (java)
文章代碼(AID): #17z3k8nD (java)