摘要: 写在开头 本文使用网络通信框架Netty实现一个EchoSever。所谓EchoServer就是服务器将客户端发送的消息原样返回给客户端。运行下面的代码需要提前准备Netty依赖包,我这里使用的是Netty 4.x。 服务端 import io.netty.bootstrap.ServerBoots 阅读全文
posted @ 2021-06-01 12:44 陈玉林 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 写在开头 本文学习使用Java原生的NIO API提供的事件驱动IO模型来编写一个EchoServer,所谓EchoServer就是,客户端发送给服务器一段消息,服务器接收到之后将消息原样返回给客户端。 示例代码没有处理Channel的关闭和如何关闭服务器,重点在于学习如何使用NIO的API。 服务 阅读全文
posted @ 2021-05-27 15:29 陈玉林 阅读(78) 评论(0) 推荐(0) 编辑
摘要: 写在开头 本篇文章的代码,是用New-IO的API实现非阻塞的EchoServer,所谓EchoSever,就是客户端给服务器发送一段消息,服务器收到之后将消息原样返回给客户端。 很多人将Java NIO单纯的理解为None-Blocking IO(非阻塞IO),实际上这并不完全正确,Java NI 阅读全文
posted @ 2021-05-27 13:10 陈玉林 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 写在开头 自Java1.4之后,Java中有两套IO API,一套基于流(InputStream、OutputStream),一套基于Channel + Buffer(New-IO)。前者只支持阻塞的IO模型,后者既支持阻塞IO也支持非阻塞IO,同时还有事件驱动的IO模型(使用Selector,一个 阅读全文
posted @ 2021-05-26 21:37 陈玉林 阅读(66) 评论(0) 推荐(0) 编辑
摘要: 一、自己写一个简单的 Hello.java,里面需要涉及基本类型,四则运行,if 和 for,然后自己分析一下对应的字节码 public class Homework { public static void main(String[] args) { int a = 10; int b = 20; 阅读全文
posted @ 2021-05-26 21:32 陈玉林 阅读(94) 评论(0) 推荐(0) 编辑
摘要: 内置锁 Java中,内置锁指的是synchronize关键字代表的锁机制。在前面的文章中曾介绍了synchronize的用法。synchronize的特点: 使用简单,不需要显式地加锁和释放锁 因获取锁而被阻塞的线程,不能响应中断、不支持超时机制 不支持多个condition 非公平的锁,不保证最先 阅读全文
posted @ 2021-02-21 21:37 陈玉林 阅读(52) 评论(0) 推荐(0) 编辑
摘要: 线程池的正确创建方式 虽然Executors类中提供了许多的工厂方法来创建各种的线程池,但是在实际的生产环境中,却不推荐直接使用这些线程池。国内大厂阿里巴巴的Java开发指导手册就约束了这个行为。不推荐使用的原因主要是: Executors的静态方法提供的线程池默认使用无解的阻塞队列,如果提交的计算 阅读全文
posted @ 2021-02-21 21:36 陈玉林 阅读(142) 评论(0) 推荐(0) 编辑
摘要: Future基本介绍 在上一篇文章中,我们用到了Future,Future具体可以用来做什么呢?要搞明白这个问题,首先要知道Future从哪儿来。下面是一个简单的例子: import java.util.concurrent.*; public class Main { public static 阅读全文
posted @ 2021-02-03 23:05 陈玉林 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 背景介绍 有时候我们需要执行一批相似的任务,并且要求这些任务能够并行执行。通常,我们的需求会分为两种情况: 并行执行一批任务,等待耗时最长的任务完成之后,再处理所有任务的结果。 并行执行一批任务,依次处理完成的任务结果(哪个任务先执行完就先处理哪个)。 这篇文章要介绍的两种批量执行任务的方式,正好对 阅读全文
posted @ 2021-02-03 13:29 陈玉林 阅读(3163) 评论(0) 推荐(0) 编辑
摘要: 线程的计算单位 在Java中,线程的计算单位是Runnable或者Callable对象的方法,通过源码可见,Runnable和Callable都是接口,里面只有一个方法声明,线程在执行的时候就是调用Runnable#run()或者Callable#call()。因此在执行并行计算时,需要考虑怎么将计 阅读全文
posted @ 2021-02-03 12:43 陈玉林 阅读(171) 评论(0) 推荐(0) 编辑