昨天系上助教講了一門課透過實作真的瞬間明白了他的道理
提供給程式跟我差不多弱懂一點點java卻又不是真的很會用像我這樣的學生
首先你需要三個class
一個主函式用的
兩個要拿來用用看Thread是什麼東西的
主函式:
Tread1:
Tread2:
當你的畫面跑出下圖就代表你測試他們兩位成功了
-------------------------------------------------------------------------------------------------------------
然後有人會問說:「為什麼主函式裡不能用tesrThread.run(),卻要用tesrThread.start()呢?」
這是個非常好的問題,我也有這個疑問
待會會用一個簡單的例子告訴你
.run()跑執行緒,會把他跑完,再來做下一件事
.start()跑執行緒,才能實現所謂多執行緒(Multi-Thread)這件神奇的事情
接下來你可以在你的執行緒裡面加入Thread.sleep(千分之秒);這件事情
可以用來延遲你的執行緒
Thread.sleep()括弧裡面放的數字單位是千分之秒,所以裡面放3000大概就是延遲3秒的意思
不過如果你直接把這行加進去的話
你的編譯程式一定會跟你說
不要鬧了 這個不能這樣用
如果你跟我一樣是用eclipse他就會跑出一個煩人的叉叉如圖
我會把他怒點兩下他就會變成這樣
然後他就會自己跑出很多try-catch那些上課有教過可是不太會用的東西
沒關係的,他都幫你寫好了,將就著用吧
接下來你讓他跑看看會發現一件很神奇的事:
沒有意外的話,他會每三秒跳出一行
但是跑出來的結果卻是testTh1的內容在testTh2的後面
由此可以得知在testTh1開始之後並不是等testTh1結束之後testTh2才開始的
-------------------------------------------------------------------------------------------------------------
接下來你可以把ThreadOne和ThreadTwo
都寫進可以讓他延遲的Thread.sleep()測試看看他能不能交替出現
如果他能夠像這樣交替出現的話,就代表你已經讓他們兩個同時運行了 (灑花)
最後我們要來比較一下前文所說的使用.start()和.run()的差異
把你主函式裡面的.start()改成.run()就可以了
很容易的可以發現使用.start()的時候,兩個thread才是可以同時運行的
非常謝謝,簡單的例子,讓我對 multi thread 有概念!
回覆刪除good example!
回覆刪除thank you
回覆刪除