- import java.io.*;
- import java.net.Socket;
- import java.net.InetSocketAddress;
- import java.nio.ByteBuffer;
- /**
- * 獲取相關數據流.
- * 把讀取的數據流,發送給處理數據流的對象ProcessRequestData.
- * @author guishuanglin 2008-11-3
- *
- */
- public class ProcessRequest implements Runnable {
- //ByteArrayOutputStream
- private ConcurrentQueue cQueue;
- private Socket socket;
- private Class clientClass;
- private int requestCount;
- private int cacheByte = 1024;
- /**
- * @param ss
- * @param requestNum
- */
- public ProcessRequest(Socket st, int requestCount,int cacheByte,Class clientClass) {
- socket = st;
- this.requestCount= requestCount;
- this.clientClass = clientClass;
- this.cacheByte = cacheByte;
- CreateCacheQueue();
- }
- public void run() {
- //啓動一個子線程,讀取數據,把數據放入緩衝隊列
- new Thread(new ProcessRequestStream(socket,requestCount,cacheByte,cQueue)).start();
- // 獲取數據流後,把數據交給處理流數據對象,使得讀取數據與處理數據分離.
- String s = socket.getInetAddress().getHostAddress();
- new Thread(new ProcessRequestData(requestCount,s,clientClass,cQueue)).start();
- //
- ReleaseResource();
- }
- /**
- * 創建客戶數據緩衝隊
- * @date 2008-11-3
- */
- public void CreateCacheQueue(){
- this.cQueue = new ConcurrentQueue(1024,String.valueOf(requestCount));
- }
- public void ReleaseResource() {
- socket=null;
- clientClass=null;
- cQueue = null;
- }
- }
jdk1.4 構建 java多線程,併發設計框架 使用列子(二)
把讀取的數據流,獲取數據流後,
1啓動一個子線程,讀取數據,把數據放入緩衝多線程併發隊列
2把數據交給處理流數據對象,使得讀取數據與處理數據分離
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.