摘要: 数据通信 概述: netty的ReadTimeOut实现方案3 服务端: public class Server { public static void main(String[] args) throws Exception{ EventLoopGroup pGroup = new NioEve 阅读全文
posted @ 2018-03-01 10:49 Mr.years 阅读(329) 评论(0) 推荐(0) 编辑
摘要: 背景 作为网络传输框架,免不了传输对象,对象在传输之前就要序列化,这个序列化的过程就是编码过程。接收到编码后的数据就需要解码,还原传输的数据。 编解码技术就是java序列化技术,序列化的目的有两个,一是进行网络传输,二是对象持久化。 但是Java的序列化缺点很多,如无法跨语言,序列化后码流太大,序列 阅读全文
posted @ 2018-02-28 10:32 Mr.years 阅读(3092) 评论(0) 推荐(0) 编辑
摘要: Netty简介 Netty是一个提供异步事件驱动的网络应用框架,用以快速开发高性能、高可靠性的网络服务器和客户端程序。 换句话说,Netty是一个NIO框架,使用它可以简单快速地开发网络应用程序,比如客户端和服务端的协议。Netty大大简化了网络程序的开发过程比如TCP和UDP的 Socket的开发 阅读全文
posted @ 2018-02-28 09:25 Mr.years 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 本概念 BIO编程 传统的BIO编程 代码示例: public class Server { final static int PROT = 8765; public static void main(String[] args) { ServerSocket server = null; try 阅读全文
posted @ 2018-02-27 11:38 Mr.years 阅读(425) 评论(0) 推荐(0) 编辑
摘要: CyclicBarrier CyclicBarrier是用来一个关卡来阻挡住所有线程,等所有线程全部执行到关卡处时,再统一执行下一步操作。假设一个场景:每个线程代表一个跑步运动员,当运动员都准备好后,才一起出发,只要有一个人没有准备好,大家就等待 。 代码示例: public class UseCy 阅读全文
posted @ 2018-02-12 11:36 Mr.years 阅读(288) 评论(0) 推荐(0) 编辑
摘要: Executor的常用方法 为了更好的控制多线程,JDK提供了一套线程框架Executor,帮助开发人员有效地进行线程控制。它们都在java.util.concurrent包中,是JDK开发包的核心。其中有一个重要的类:Executors,他扮演这线程工厂的角色,我们通过Executors可以创建特 阅读全文
posted @ 2018-02-09 10:02 Mr.years 阅读(517) 评论(0) 推荐(0) 编辑
摘要: 代码示例: public interface Data { String getRequest(); } public class FutureData implements Data{ private RealData realData ; private boolean isReady = fa 阅读全文
posted @ 2018-02-07 14:27 Mr.years 阅读(427) 评论(0) 推荐(0) 编辑
摘要: BlockingQueue:顾名思义,首先它是一个队列,并且支持阻塞的机制,阻塞的放入和得到数据。我们要实现LinkedBlockingQueue下面的两个方法put和take. put(anObject):把anObject加到BlockingQueue里,如果BlockingQueue没有空间, 阅读全文
posted @ 2018-02-06 14:10 Mr.years 阅读(610) 评论(0) 推荐(0) 编辑
摘要: 线程通信概念:线程是操作系统中独立的个体,但这些个体如果不经过特殊的处理就不能成为一个整体,线程间的通信就成为整体的必用方式之一。当线程存在通信指挥,系统间的交互性会更强大,在提高CPU利用率的同时就会使开发人员对线程任务在处理的过程中进行有效的把握和监督。 使用wait/notify方法实现线程间 阅读全文
posted @ 2018-02-04 13:33 Mr.years 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 在java1.5中Lock对象来实现同步的效果,而且使用上更方便。 使用ReentrantLock实现同步 public class MyService { private Lock lock = new ReentrantLock(); public void methodA(){ try { l 阅读全文
posted @ 2018-01-18 15:45 Mr.years 阅读(242) 评论(0) 推荐(0) 编辑