第九周課程總結 實驗報告(七)

2022-06-27 23:18:18 字數 1991 閱讀 9658

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 ...