1. java Thread 問題
肯定是 d. targetObject instanceof Runnable
你的去補充下 創建線程的兩種方式,
1.繼承Thread 類
2.實現Runnable 介面。
Thread t = new Thread(new Runnable(){public void run(){do something...}});
2. java裡面的Thread類存在的意義是什麼
Runnable是介面,只規定了run方法,本身不幹活的。
你可以用任何方式實現Runnable,Thread類也是Runnable的一個具體實現,它的實現方式是啟動一個新的線程,並執行run方法。
這樣的設計Java裡面到處都是,簡直成為一個常態。
介面是抽象的一個體現,只抽象功能,並不理會具體屬性和實現。
3. java,線程Thread(Runnable target)
你的理解很正確,只要是實現了Runnable介面的類都可以傳進去。
這個參數可以是API中已經有的,也可以是自己寫的。
常用的創建線程的方法有兩種,第一種就是繼承Thread類,直接new
出來就可以,Thread類本身也實現了Runnable介面。
第二種方法就是實現Runnable介面裡面的run方法。
語法正如你的代碼一樣
4. java中多線程常見的幾個參數
java中多線程常見的幾個參數
sleep:在指定的毫秒數內讓當前正在執行的線程休眠(暫停執行).
此操作受到系統計時器和調度程序精度和准確性的影響。
該線程不丟失任何監視器的所屬權。
調用sleep的時候鎖並沒有被釋放。
休眠
Java SE5引入了更加顯示的sleep()作為TimeUnit類的一部分,這個方法允許你指定sleep()延遲的時間單元,因此可以提供更好的可閱讀性。
wait:調用wait使線程掛起,直到線程得到了notify或notifyAll消息,線程才會進入就緒狀態。
使你可以等待某個條件發生變化,而改變這個條件超出了當前方法的控制能力。
線程的執行被掛起,對象上的鎖被釋放。意味著另一個任務可以獲得這個鎖。
因此在該對象中的其他synchronized方法可以在wait期間被調用。
yield:相當於:我的工作已經做的差不多了,可以讓給別的線程使用CPU了。
當調用yield時,你也是在建議具有相同優先順序的其他線程可以運行。
對於任何重要的控制或在調整應用時,都不能依賴於yield。
yield並不意味著退出和暫停,只是,告訴線程調度如果有人需要,可以先拿去,我過會再執行,沒人需要,我繼續執行
調用yield的時候鎖並沒有被釋放。
interrupt:中斷線程。
Thread類包含interrupt()方法,因此你可以中止被阻塞的任務。
這個方法將設置線程的中斷狀態。
如果一個線程已經被阻塞,或者試圖執行一個阻塞操作,那麼設置這個線程的中斷狀態將拋出InterruptedException。
當拋出該異常或者該任何調用Thread.interrupted()時,中斷狀態將復位。
你在Executor上調用shutdownNow(),那麼它將發送一個interrupt()調用給他啟動的所有線程。
5. Java中線程Thread有沒有帶參數的run方法呀
沒有,線程中沒有帶參數的run方法。
如果想要實現帶參數的run方法:
1、定義線程內變數
2、在繼承thread的時候,增加帶參數的構造函數,初始化線程內變數
3、在run方法操作線程內變數,以達到類似傳參的效果。
示例:
classMyThreadextendsThread{
inta=0;//定義線程內變數
publicMyThread(inta){//定義帶參數的構造函數,達到初始化線程內變數的值
this.a=a;
}
@Override
publicvoidrun(){
this.a++;//線程內變數自增
}
}
6. java線程裡面Thread thread=new Thread(file,"aaa"),這裡面第二個參數什麼意思啊
線程名稱,這個可以自定義,如果不寫的話現正也會自己定義一個名字(thread-1),你也可以在run方法里使用thread.getName()來查看。
7. JAVA的Thread類的構造方法
Java的線程是通過java.lang.Thread類來實現的
構造方法:
Thread()
Thread(Runnable�0�2target)
參數:target 稱為被創建線程的目標對象。創建目標對象target的類負責實現 Runnable介面,給出該介面中run()方法的方法體。
利用構造方法創建新線程對象後,進入線程的新建狀態。
8. java初始化Thread t1 = new Thread(new TimePrinter(1000, "Fast Guy"))是什麼意思
Thread(Runnable target)
Thread(String name)
以上是api中的兩個thread的一個參數的構造方法,均是為了分配一個新的線程。
兩個構造函數一個傳入的是runnable對象,一個是string這個線程的名字。
縱觀你的java類,new TimePrinter(1000, "Fast Guy")即為創建了一個你當前類的對象,而你當前類實現了Runnable 介面,即你新建一個當前類的對象即為runnable對象,如此我們可以很清晰的看到new Thread(new TimePrinter(1000, "Fast Guy")),向Thread t1中傳遞的為一個runnable對象,即為這個t1的線程中綁定了你當前類的一個run方法在其中。
而接下來,t1.start();即為啟動當前類的run方法,傳遞進去的1000即為線程Thread.sleep(pauseTime); 的睡眠時間。
整觀整個java類的作用即是列印輸出你傳入的name名字加當前時間,線程睡眠一秒鍾之後。不停的循環列印你當前的名字和時間。
PS:多看api,多動腦筋想問題,多寫代碼,總有一天你也會成長為一個高手。