Java Runnable線程如何編寫接口代碼
Java Runnable線程如何才能更好的適應(yīng)目前的編程環(huán)境呢?下面我們就看看如何才能更好的進(jìn)行相關(guān)環(huán)境。希望下面的文章對大家有所幫助。Java Runnable線程接口只有一個方法run(),我們聲明自己的類實現(xiàn)Runnable接口并提供這一方法。
將我們的線程代碼寫入其中,就完成了這一部分 的任務(wù)。但是Runnable接口并沒有任何對線程的支持,我們還必須創(chuàng)建Thread類的實例,這一點通過Thread類的構(gòu)造函 數(shù) public Thread(Runnable target);來實現(xiàn)。
下面是一個例子:
- public class MyThread implements Runnable
- {
- int count= 1, number;
- public MyThread(int num)
- {
- numnumber = num;
- System.out.println("創(chuàng)建線程 " + number);
- }
- public void run()
- {
- while(true)
- {
- System.out.println
- ("線程 " + number + ":計數(shù) " + count);
- if(++count== 6) return;
- }
- }
- public static void main(String args[])
- {
- for(int i = 0; i 〈 5;
- i++) new Thread(new MyThread(i+1)).start();
- }
- }
嚴(yán)格地說,創(chuàng)建Thread子類的實例也是可行的,但是必須注意的是,該子類必須沒有覆蓋 Thread 類的 run 方法,否則該線程執(zhí)行的將是子類的 run 方法,而不是我們用以實現(xiàn)Java Runnable線程接口的類的 run 方法,對此大家不妨試驗一下。#t#
使用 Runnable 接口來實現(xiàn)多線程使得我們能夠在一個類中包容所有的代碼,有利于封裝,它的缺點在于,我們只能使用一套代碼,若想創(chuàng)建多個線程 并使各個線程執(zhí)行不同的代碼,則仍必須額外創(chuàng)建類,如果這樣的話,在大多數(shù)情況下也許還不如直接用多個類分別繼承 Thread 來得緊湊。
綜上所述,兩種方法各有千秋,大家可以靈活運(yùn)用。下面讓我們一起來研究一下多線程使用中的一些問題。
Java Runnable線程的四種狀態(tài)
1. 新狀態(tài):線程已被創(chuàng)建但尚未執(zhí)行(start() 尚未被調(diào)用)。
2. 可執(zhí)行狀態(tài):線程可以執(zhí)行,雖然不一定正在執(zhí)行。CPU 時間隨時可能被分配給該線程,從而使得它執(zhí)行。
3. 死亡狀態(tài):正常情況下 run() 返回使得線程死亡。調(diào)用 stop()或 destroy() 亦有同樣效果,但是不被推薦,前者會產(chǎn)生異常,后者是強(qiáng)制終止,不會釋放鎖。
4. 阻塞狀態(tài):線程不會被分配 CPU 時間,無法執(zhí)行。