多執行緒設計模式 suspension

2021-08-30 03:12:28 字數 2707 閱讀 4792

suspension(要等到我準備好噢)

請求物件

public class request 

public string getname()

public string tostring()

}

工作快取器

public class requestqueue  catch (interruptedexception e)                                        

}

return (request)queue.removefirst();

}//客戶新增請求

//保證同時只乙個客戶執行這個方法

public synchronized void putrequest(request request)

}

工作快取器jdk1.5新特性實現

public class requestqueue 

} catch (interruptedexception e) finally

return (request) queue.removefirst();

}public void putrequest(request request) finally

}}

工作快取器jdk1.5新特性實現

public class newrequestqueue  catch (exception e) 

}public void putrequest(request request) catch (exception e)

}}

blockingqueue 是一種特殊的queue,若blockingqueue 是空的,從

blockingqueue 取東西的操作將會被阻斷進入等待狀態直到blocingkqueue 進

了新貨才會被喚醒。同樣,如果blockingqueue 是滿的任何試圖往裡存東西的

操作也會被阻斷進入等待狀態,直到blockingqueue 裡有新的空間才會被喚醒

繼續操作。blockingqueue 提供的方法主要有:

add(anobject): 把anobject 加到blockingqueue 裡,如果

blockingqueue 可以容納返回true,否則丟擲illegalstateexception 異常。

offer(anobject):把anobject 加到blockingqueue 裡,如果

blockingqueue 可以容納返回true,否則返回false。

put(anobject):把anobject 加到blockingqueue 裡,如果blockingqueue

沒有空間,呼叫此方法的執行緒被阻斷直到blockingqueue 裡有新的空間再繼

續。poll(time):取出blockingqueue 裡排在首位的物件,若不能立即取出可

等time 引數規定的時間。取不到時返回null。

take():取出blockingqueue 裡排在首位的物件,若blockingqueue 為

空,阻斷進入等待狀態直到blockingqueue 有新的物件被加入為止。

根據不同的需要 blockingqueue 有4 種具體實現:

arrayblockingqueue:規定大小的blockingqueue,其建構函式必須帶

乙個int 引數來指明其大小。其所含的物件是以fifo(先入先出)順序排序

的。linkedblockingqueue:大小不定的blockingqueue,若其建構函式帶一

個規定大小的引數,生成的blockingqueue 有大小限制,若不帶大小引數,

所生成的blockingqueue 的大小由integer.max_value 來決定。其所含的

物件是以fifo(先入先出)順序排序的。linkedblockingqueue 和

arrayblockingqueue 比較起來,它們背後所用的資料結構不一樣,導致

數量很大時其效能的可預見性低於arrayblockingqueue。

priorityblockingqueue:類似於linkedblockingqueue,但其所含物件的

排序不是fifo,而是依據物件的自然排序順序或者是建構函式所帶的

comparator 決定的順序。

synchronousqueue:特殊的blockingqueue,對其的操作必須是放和取

交替完成的。

客戶執行緒

public class clientthread extends thread 

public void run() catch (interruptedexception e) }}

}

伺服器執行緒

public class serverthread extends thread 

public void run() catch (interruptedexception e) }}

}

測試類

public class main 

}

多執行緒設計模式

呼叫類 public class main 介面 public inte ce data 包裝類 public class futureclient start return futuredata 真實資料處理類 public class realdata implements data catch...

多執行緒設計模式

所謂 single threaded execution 即 以乙個執行緒執行 該模式用於設定限制,以確保同一時間內只讓乙個執行緒執行處理。immutable模式中存在著確保例項狀態不發生改變的類 immutable類 在訪問這些例項時並不需要執行耗時的互斥處理,因此若能巧妙利用該模式,定能提高程式...

多執行緒 多執行緒 單例設計模式

多執行緒之 單例設計模式 餓漢式 多執行緒安全 1 餓漢式 class single static single getinstance public void show class a implements runnable class test catch interruptedexceptio...