jdk1.4 构建 java多线程,并发设计框架 使用列子(一)
来源:互联网 发布:关于qq空间的网络用语 编辑:程序博客网 时间:2024/05/14 21:26
网络 Socket监听服务器
- import java.io.IOException;
- import java.net.ServerSocket;
- import java.net.Socket;
- /**
- * Socket监听服务器
- * @author guishuanglin 2008-11-3
- *
- */
- public class SocketListenServe implements Runnable{
- private ServerSocket ss;
- private boolean listening = true;
- private int port = 10001;
- //最大队列长度被设置为 backlog 参数
- private int backlog = 20;
- private Class client;
- //读取客户端数据本地缓冲
- private int cacheBtye=1024;
- private int requestCount=100000;
- public SocketListenServe(IProcessClientData pClient) {
- client = pClient.getClass();
- }
- public SocketListenServe(int cacheBtye,IProcessClientData pClient) {
- this.cacheBtye = cacheBtye;
- client = pClient.getClass();
- }
- public SocketListenServe(int port,int backlog,int cacheBtye,IProcessClientData pClient) {
- this.port = port;
- this.backlog = backlog;
- this.cacheBtye = cacheBtye;
- client = pClient.getClass();
- }
- public void run() {
- Init();// 初始化
- Listen();// 启动监听
- }
- /**
- * 初始化
- * @date 2008-11-3
- */
- public void Init() {
- try {
- ss = new ServerSocket(port, backlog);
- System.out.println("服务已经启动,开始在端口["+port+"]监听,等待TCP客户端连接....");
- } catch (IOException ie) {
- System.out.println("无法启动监听,可能由于网络不通,或端口["+port+"]已被占用.");
- ie.printStackTrace();
- System.exit(0);
- }
- }
- /**
- * 启动监听
- * @date 2008-11-3
- */
- public void Listen() {
- while (listening) {
- try {
- Socket s = ss.accept();
- System.out.println("收到客户端["+ s.getInetAddress().getHostAddress() + "]连接请求.");
- new Thread(new ProcessRequest(s,this.getRequestCount(),cacheBtye,client)).start();
- } catch (IOException ie) {
- System.out.println("服务器异常");
- ie.printStackTrace();
- //碰到异常关闭服务重新打开
- this.ReleaseResource();
- this.Init();
- }catch (Exception ex) {
- System.out.println("服务器异常");
- ex.printStackTrace();
- this.ReleaseResource();
- this.Init();
- }
- }
- }
- /**
- * 关闭服务实例
- * @date 2008-11-3
- */
- public void ReleaseResource(){
- try {
- if (ss != null && !ss.isClosed())
- ss.close();
- //关闭服务后睡眠5s.
- Thread.sleep(5000);
- } catch (IOException e) {
- e.printStackTrace();
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- public int getRequestCount(){
- //重复计数
- if(this.requestCount >1000000){
- this.requestCount=0;
- }
- return this.requestCount++;
- }
- public static void main(String args[]) {
- //ProcessClientDataImpl client = new ProcessClientDataImpl();
- //SocketListenServe servie = new SocketListenServe(client);
- }
- }
- jdk1.4 构建 java多线程,并发设计框架 使用列子(一)
- jdk1.4 构建 java多线程,并发设计框架 使用列子(三)
- jdk1.4 构建 java多线程,并发设计框架 使用列子(二)
- jdk1.4 构建 java多线程,并发设计框架 使用列子(四)
- jdk1.4 构建 java多线程,并发设计框架 使用列子(五)
- jdk1.4 构建 java多线程,并发设计框架 使用列子(六)
- jdk1.4 构建 java多线程,并发设计框架 (二)
- jdk1.4 构建 java多线程,并发设计框架 (三)
- jdk1.4 构建 java多线程,并发设计框架 (四)
- jdk1.4 构建 java多线程,并发设计框架 (五)
- jdk1.4 构建 java多线程设计框架 (一)
- 多线程开发的捷径:构建Java并发模型框架
- 多线程开发的捷径:构建Java并发模型框架
- 构建Java并发模型框架
- 构建Java并发模型框架
- 构建Java并发模型框架
- 构建Java并发模型框架
- 构建Java并发模型框架
- 夏日如何让胖胖身材三分钟穿出林志玲火爆身材
- swt desiner 的下载与安装
- jdk1.4 构建 java多线程,并发设计框架 (五)
- 基于LINUX内核中的TCP/IP的核心过程分析
- Multiple Language Syntax Highlighting, Part 1: JScript
- jdk1.4 构建 java多线程,并发设计框架 使用列子(一)
- HSI、HSV、RGB、CMYK、HSL、HSB、Ycc、XYZ、Lab、YUV颜色模型的区别
- Java调用dos命令
- SQL Server sysobjects 表结构
- RGB、HSV色彩空间模式的互相转换
- log4net - a .Net logging tool
- C#中的类型转换
- android 调用Webkit工具
- jdk1.4 构建 java多线程,并发设计框架 使用列子(三)