您的位置:首页 > 编程语言 > Java开发

jdk1.4 构建 java多线程,并发设计框架 使用列子(二)

2008-12-06 10:13 856 查看
 把读取的数据流,获取数据流后,1启动一个子线程,读取数据,把数据放入缓冲多线程并发队列2把数据交给处理流数据对象,使得读取数据与处理数据分离

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;
    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: