java多執行緒例項
實現執行緒的方式有兩種:
1、繼承java.lang.Thread,並重寫它的run()方法,將執行緒的執行主體放入其中。
2、實現java.lang.Runnable介面,實現它的run()方法,並將執行緒的執行主體放入其中。 ==多執行緒的執行邏輯:
當主執行緒被掛起時, 其它就緒的執行緒會根據選擇最
實現執行緒的方式有兩種:
1、繼承java.lang.Thread,並重寫它的run()方法,將執行緒的執行主體放入其中。
2、實現java.lang.Runnable介面,實現它的run()方法,並將執行緒的執行主體放入其中。
1、繼承java.lang.Thread,並重寫它的run()方法,將執行緒的執行主體放入其中。
2、實現java.lang.Runnable介面,實現它的run()方法,並將執行緒的執行主體放入其中。
==>多執行緒的執行邏輯:
當主執行緒被掛起時, 其它就緒的執行緒會根據選擇最高優先順序的來執行;
當主執行緒的掛起時間 > 子執行緒的執行時間時,子執行緒執行完後回到主執行緒,等待主執行緒醒來.
當主執行緒的掛起時間 < 子執行緒的執行時間時,主執行緒掛起時間到的,自動醒來,回到主執行緒,此時可以判斷子執行緒是否存在,若有,可stop之.
當主執行緒被掛起時, 其它就緒的執行緒會根據選擇最高優先順序的來執行;
當主執行緒的掛起時間 > 子執行緒的執行時間時,子執行緒執行完後回到主執行緒,等待主執行緒醒來.
當主執行緒的掛起時間 < 子執行緒的執行時間時,主執行緒掛起時間到的,自動醒來,回到主執行緒,此時可以判斷子執行緒是否存在,若有,可stop之.
(2)
兩種方式的區別:
繼承Thread類的方式實現起來較為簡單,但是繼承它的類就不能再繼承別的類了,因此也就不能繼承別的類的有用的方法了。而使用是想Runnable 介面的方式就不存在這個問題了,而且這種實現方式將執行緒主體和執行緒物件本身分離開來,邏輯上也較為清晰,所以推薦大家更多地採用這種方式。
兩種方式的區別:
繼承Thread類的方式實現起來較為簡單,但是繼承它的類就不能再繼承別的類了,因此也就不能繼承別的類的有用的方法了。而使用是想Runnable 介面的方式就不存在這個問題了,而且這種實現方式將執行緒主體和執行緒物件本身分離開來,邏輯上也較為清晰,所以推薦大家更多地採用這種方式。
run()方法中包含的是執行緒的主體,也就是這個執行緒被啟動後將要執行的程式碼,它跟執行緒的啟動沒有任何關係。
上面兩種實現執行緒的方式在啟動時會有所不同。
#
ThreadTest tt = new
ThreadTest();
#
// 啟動執行緒
#
tt.start();
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>
#
#
#
#
#
#
執行緒的狀態:
(3)
例項一:
import java.io.*;
//多執行緒程式設計
public class MultiThread
{