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