TimeServer代码

package pseudoasynchronous;import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;public class TimeServer {public static void main(String[] args) throws IOException {int port = 8081;if (args != null && args.length > 0) {try {port = Integer.valueOf(args[0]);} catch (NumberFormatException e) {}}ServerSocket server = null;try {server = new ServerSocket(port);System.out.println("The time server is start in port : " + port);Socket socket = null;TimeServerHandlerExecutePool singleExecutor = new TimeServerHandlerExecutePool(50, 10000); // 创建I/O任务线程池while (true) {socket = server.accept();singleExecutor.execute(new TimeServerHandler(socket));}} finally {if (server != null) {System.out.println("The time server close");server.close();server = null;}}}
}

TimeServerHandler代码

package pseudoasynchronous;import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;public class TimeServerHandler implements Runnable {private  Socket socket;public TimeServerHandler(Socket socket) {this.socket = socket;}public void run() {BufferedReader in = null;PrintWriter out = null;try {in = new BufferedReader(new InputStreamReader(this.socket.getInputStream()));out = new PrintWriter(socket.getOutputStream(), true);String currentTime = null;String body = null;while (true) {body = in.readLine();if (body == null) {break;}System.out.println("The time server receive order : " + body);currentTime = "QUERY TIME ORDER".equalsIgnoreCase(body) ? new java.util.Date(System.currentTimeMillis()).toString() : "BAD ORDER";out.println(currentTime);}} catch (Exception e) {if (in != null) {try {in.close();} catch (Exception e2) {e2.printStackTrace();}}if (out != null) {out.close();out = null;}if (this.socket != null) {try {this.socket.close();} catch (Exception e2) {e2.printStackTrace();}this.socket = null;}}}
}

TimeClient代码

package pseudoasynchronous;import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;public class TimeClient {public static void main(String[] args) {int port = 8081;if (args != null && args.length > 0) {try {port = Integer.valueOf(args[0]);} catch (NumberFormatException e) {e.printStackTrace();}}Socket socket = null;BufferedReader in = null;PrintWriter out = null;try {socket = new Socket("127.0.0.1", port);in = new BufferedReader(new InputStreamReader(socket.getInputStream()));out = new PrintWriter(socket.getOutputStream(), true);out.println("QUERY TIME ORDER");System.out.println("Send order 2 server succeed.");String resp = in.readLine();System.out.println("Now is : " + resp);} catch (Exception e) {} finally {if (out != null) {out.close();out = null;}if (in != null) {try {in.close();} catch (Exception e) {e.printStackTrace();}in = null;}if (socket != null) {try {socket.close();} catch (Exception e) {e.printStackTrace();}socket = null;}}}}

TimeServerHandlerExecutePool代码

package pseudoasynchronous;import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;public class TimeServerHandlerExecutePool {private ExecutorService executor;public TimeServerHandlerExecutePool(int maxPoolSize, int queueSize) {executor = new ThreadPoolExecutor(Runtime.getRuntime().availableProcessors(), maxPoolSize, 120L, TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(queueSize));}public void execute(Runnable task) {executor.execute(task);}
}

Netty权威指南2.2伪异步IO,Demo代码相关推荐

  1. 【3月15日】BIO、伪异步IO以及NIO编程实践

    1.引言 从java的I/O体系发展的历史看,先有java.io,后有java.nio.前者一般称之为IO,后者称之为NIO(New IO).但是又由于其特性前者又成为BIO(Block IO),后者 ...

  2. 《Netty权威指南》

    <Netty权威指南> 基本信息 作者: 李林锋 出版社:电子工业出版社 ISBN:9787121233432 上架时间:2014-5-29 出版日期:2014 年6月 开本:16开 页码 ...

  3. 《Netty权威指南》笔记 —— 第二十、二十一、二十二, 二十三章

    <Netty权威指南>笔记--Netty高级特性 第20章 Netty架构剖析 Reactor通信调度层 职责链 ChannelPipeline 业务逻辑编排层 关键架构质量属性 高性能 ...

  4. [201504][Netty 权威指南][第2版][李林锋][著]

    [201504][Netty 权威指南][第2版][李林锋][著] https://github.com/wuyinxian124/nettybook2 基础篇 走进 Java NIO 第 1 章 J ...

  5. 《Netty权威指南 第2版》学习笔记(1)---服务端与客户端开发入门

    前言 Netty权威指南中以时间服务器为入门案例,演示了如何通过Netty完成了服务端与客户端之间的交互过程. 在开始使用Netty开发之前,先回顾一下使用NIO进行服务端开发的步骤. 创建Serve ...

  6. netty权威指南第一章

    本章内容如下: 5种网络I/O模型的介绍 I/O多路复用的介绍 1.I/O基础入门 在Java1.4之前,Java对I/O的支持不完善,开发人员在开发高性能I/O的程序时,会面临以下问题: 没有数据缓 ...

  7. netty权威指南 学习笔记http

    序 李林峰的<netty权威指南>,从Java的NIO开始介绍,后面介绍TCP粘包拆包.中级篇介绍编解码技术. 第10章介绍了HTTP及netty HTTP+XML的技术. 因为xml实际 ...

  8. 《Netty权威指南》第2章 NIO入门

    本章是对JDK的BIO.NIO和JDK1.7最新提供的NIO2.0的使用进行说明. 2.1 传统的BIO编程 网络编程的基本模型是Client/Server模型.服务端提供位置信息(绑定的IP地址和监 ...

  9. netty权威指南笔记-以回车换行结尾的消息如何处理半包问题

    概述 TCP底层会发生粘包和拆包,这个是TCP的一个特性.为了减少网络数据传输的次数,TCP总是希望让网络数据到达一定量级的时候才将数据发送出去,而不是缓存区一有数据就马上发送数据. TCP底层会根据 ...

  10. IT人物之《Netty权威指南》中文作者 专访华为李林锋:我与Netty那些不得不说的事

    摘要:Netty是业界最流行的NIO框架之一,它的健壮性.功能.性能.可定制性和可扩展性在同类框架中都是首屈一指的.近日,CSDN采访了Netty领域的权威人士李林锋,请他分享Netty开发的经验之道 ...

最新文章

  1. .pgr照片文件解析,C++与Java存储数据差别大小端模式
  2. 链表排序(C语言)选择排序
  3. linux tomcat自启动设置
  4. 【Linux】一步一步学Linux——pidof命令(122)
  5. python二维列表做参数_python sum函数iterable参数为二维list,start参数为“[]”该如何理解...
  6. Android Activity标签属性
  7. jremind V0.1.3.0添加透明
  8. 蓝牙最新版本6.0_FIIL新品 T1 Lite,蓝牙5.2加持下的TWS耳机
  9. slr1文法_SLR的完整形式是什么?
  10. blasphemy - 题解
  11. Android开发学习笔记---搭建Android开发环境
  12. 锐捷客户端在linux下的校园网认证
  13. Ubuntu环境下Android反编译apk教程
  14. matlab输电线路模型,输电线路模型及其特性.ppt
  15. python-onvif 库踩坑
  16. 渗透测试工具集(非常详细),从零基础入门到精通,看完这一篇就够了(附安装)
  17. 国内的云服务器哪家值得推荐?
  18. MATLAB去除数据中的异常值、离群值
  19. linux版_百度输入法Linux版发布 | 欧侃在线“统一源”提供直接安装
  20. 深度学习理论解析与实战应用

热门文章

  1. iOS ApplePay paymentData 加解密 (待续)
  2. linux读取bmp图片数据,linux下读取bmp图片文件头
  3. 802.11n无线网卡驱动linux,安装Broadcom Linux hybrid 无线网卡驱动总结
  4. mpg文件怎么转换成mp4
  5. VARCHART XGantt 应用程序支持简介
  6. 三角测量计算三维坐标的代码_室内定位系统的三边测量与三角测量
  7. 计算机模拟仿真技术的功能,浅谈虚拟仿真技术
  8. 保护眼睛——设置WIN7和XP 窗体、Chrome、IE网页背景颜色
  9. 走出校门,重新起航,从纯粹到再次纯粹
  10. 黑客社会工程学攻击特别危险,你知道多少?