Re: [J2SE] Thread的執行
※ 引述《nf7series (真呆)》之銘言:
: 問個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先執行完的一種方法?
join 是等待另一個 thread 執行完。
: 另外,若我在程式中加入sleep()的方法,t1.sleep()、t2.sleep()、Thread.sleep()和
: sleep() <----沒指定哪個thread,各是讓哪個Thread休息呢?哪個thread呼叫sleep就是
: 讓它自己休息嗎?或是不管誰呼叫sleep都是讓目前正在執行的thread休息?
sleep 是讓呼叫者睡著,你會發現它是靜態成員方法 (static member method)
: 先謝謝了~~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.246.218
討論串 (同標題文章)