thread類是乙個具體的類,該類封裝了執行緒的屬性和行為。
thread類的建構函式有多個,比較常用的有如下幾個。
(1)public thread();
這個方法建立了乙個預設的執行緒類物件。
(2)public thread(runnable target);
這個方法在上乙個建構函式的基礎上,利用乙個實現了runnable介面引數物件target中所定義的run()方法,以便初始化或覆蓋新建立的執行緒物件的run()方法。
(3)public thread(string name);
thread類的主要方法如下:
(1)啟動執行緒的start()方法:public void start()。
(2)定義執行緒操作的run()方法:public void run()。
(3)使執行緒暫時休眠的sleep()方法:
public static void sleep(long millis) throws interruptedexception1
(4)終止執行緒的方法stop():
public final void stop()
public final void stop(throwable obj)
.class《類名》 extends thread
}
定義runnable介面的實現類,並重寫其中的run方法。run()方法的方法體是執行緒執行體。
.class《類名》 implement runnable
}
注意:thread有單繼承的問題;runnable便於實現資源共享,而thread不能;
當用new操作符建立乙個執行緒時。此時程式還沒有開始執行執行緒中的**。
乙個新建立的執行緒並不自動開始執行,要執行執行緒,必須呼叫執行緒的start()方法。當執行緒物件呼叫start()方法即啟動了執行緒,start()方法建立執行緒執行的系統資源,並排程執行緒執行run()方法。當start()方法返回後,執行緒就處於就緒狀態。
當執行緒獲得cpu時間後,它才進入執行狀態,真正開始執行run()方法。
執行緒執行過程中,可能由於各種原因進入阻塞狀態:
①執行緒通過呼叫sleep方法進入睡眠狀態;
②執行緒呼叫乙個在i/o上被阻塞的操作,即該操作在輸入輸出操作完成之前不會返回到它的呼叫者;
③執行緒試圖得到乙個鎖,而該鎖正被其他執行緒持有;
④執行緒在等待某個觸發條件;
所謂阻塞狀態是正在執行的執行緒沒有執行結束,暫時讓出cpu,這時其他處於就緒狀態的執行緒就可以獲得cpu時間,進入執行狀態。
有兩個原因會導致執行緒死亡:
①run方法或stop方法正常退出而自然死亡;
②乙個未捕獲的異常終止了run方法而使執行緒猝死;
要求:(1)總票數1000張;
(2)10個視窗同時開始賣票;
(3)賣票過程延時1秒鐘;
(4)不能出現一票多賣或賣出負數號票的情況。
package shiyan7;
public class maipiao implements runnablecatch(interruptedexception e)
ticket--;
system.out.println(thread.currentthread().getname()+":售票一張:剩餘"+ticket+"張票");
第九周課程總結 實驗報告(七)
第九周課程總結 實驗報告 七 實驗任務詳情 完成火車站售票程式的模擬。要求 1 總票數1000張 2 10個視窗同時開始賣票 3 賣票過程延時1秒鐘 4 不能出現一票多賣或賣出負數號票的情況。實驗過程 1.實驗 public class test package com.company public...
第九周課程總結 實驗報告(七)
實驗任務詳情 完成火車站售票程式的模擬。要求 1 總票數1000張 2 10個視窗同時開始賣票 3 賣票過程延時1秒鐘 4 不能出現一票多賣或賣出負數號票的情況。源 package 實驗七 class mythread implements runnable catch interruptedexc...
第九周課程總結 實驗報告(七)
完成火車站售票程式的模擬。要求 1 總票數1000張 2 10個視窗同時開始賣票 3 賣票過程延時1秒鐘 4 不能出現一票多賣或賣出負數號票的情況。package line class mythread implements runnablecatch interruptedexception e ...