前言 :
Thread-Per-Message Pattern 的所有參予者 :
* Client (委託人) 參予者 :
* Host 參予者 :
* Helper 參予者 :
使用範例 :
在這裡要寫的範例程序中, Main 類會委託 Host 類顯示文字. 而Host 類會啟動線程來處理這項委託工作. 啟動的線程會使用 Helper 類來進行顯示操作.
* Main 類 :
Main 類會建立 Host 物件而後調用 Host 物件的 request 方法, 代碼如下 :
* Host 類 :
Host 類中, 在request方法中啟動新的線程. 實際的處理委託操作則由該線程負責. 代碼如下 :
* Helper 類 :
Helper 類提供了handle 方法, 用來將字符顯示指定次數. 代碼如下 :
使用時機 :
* 提升響應性, 降低延遲時間 :
* 適合在操作順序無所謂時:
* 不需要返回值時:
* 在服務器的製作 :
補充說明 :
1. Future Pattern :
2. Worker Thread Pattern :
Thread-Per-Message Pattern 的所有參予者 :
* Client (委託人) 參予者 :
* Host 參予者 :
* Helper 參予者 :
使用範例 :
在這裡要寫的範例程序中, Main 類會委託 Host 類顯示文字. 而Host 類會啟動線程來處理這項委託工作. 啟動的線程會使用 Helper 類來進行顯示操作.
* Main 類 :
Main 類會建立 Host 物件而後調用 Host 物件的 request 方法, 代碼如下 :
- package dp.thread.ch7;
- public class Main {
- public static void main(String args[]) {
- System.out.println("main BEGIN");
- Host host = new Host();
- host.request(10, 'A');
- host.request(20, 'B');
- host.request(30, 'C');
- System.out.println("main END");;
- }
- }
Host 類中, 在request方法中啟動新的線程. 實際的處理委託操作則由該線程負責. 代碼如下 :
- package dp.thread.ch7;
- public class Host {
- private final Helper helper = new Helper();
- public void request(final int count, final char c) {
- System.out.println(" Request("+count+", "+c+")BEGIN");
- new Thread() {
- public void run(){
- helper.handle(count, c);
- }
- }.start();
- System.out.println(" Request("+count+", "+c+")END");
- }
- }
Helper 類提供了handle 方法, 用來將字符顯示指定次數. 代碼如下 :
- package dp.thread.ch7;
- public class Helper {
- public void handle(int count, char c) {
- System.out.println(" Handle("+count+", "+c+") BEGIN");
- for(int i=0;i
- slowly();
- System.out.print(c);
- }
- System.out.println("");
- System.out.println(" Handle("+count+", "+c+") END");
- }
- private void slowly(){
- try{
- Thread.sleep(100);
- }catch(InterruptedException e){
- e.printStackTrace();
- }
- }
- }
使用時機 :
* 提升響應性, 降低延遲時間 :
* 適合在操作順序無所謂時:
* 不需要返回值時:
* 在服務器的製作 :
補充說明 :
1. Future Pattern :
2. Worker Thread Pattern :
This message was edited 2 times. Last update was at 07/01/2010 17:49:28
沒有留言:
張貼留言