随笔分类 -  多线程

摘要:AIO是异步非阻塞io, 也叫 nio2.0. 直接上代码, server: public class Server implements Runnable { public AsynchronousServerSocketChannel assc; private CountDownLatch l 阅读全文
posted @ 2020-03-01 15:31 Sniper_ZL 阅读(491) 评论(0) 推荐(0)
摘要:随着访问量越来越多, BIO 和 伪异步IO 已经不能满足需求了. 所以后面又出了个 NIO. 1. NIO 使用了一个 通道Channel 的概念, 他是一个双向通道, 可以读取和写入数据. 程序中使用的 SocketChannel 读写操作都是异步的, 没有读写的数据最直接返回. 2. NIO 阅读全文
posted @ 2020-03-01 15:29 Sniper_ZL 阅读(463) 评论(0) 推荐(0)
摘要:BIO的时候, 一个客户端对应服务器的一条线程, 比较耗线程资源. 在此基础上, 对起线程进行优化, 创建一个线程池, 对线程进行管理, 可以设置一个最大线程数 maxThreadCount. 这样, 达到线程可控的目的. 即使外面有远大于线程数的连接过来, 也不至于让服务器撑爆. 多出的客户端, 阅读全文
posted @ 2020-03-01 15:27 Sniper_ZL 阅读(384) 评论(0) 推荐(0)
摘要:BIO BIO 是一种同步阻塞模式, 只要有一个客户端接入, 服务器就会有一条线程与之对应, 进行通信. 以前的一种常用做法是, 服务器端起一条线程, 进行监听, 当监听到客户端接入后, 新起一条线程, 专门与客户端进行通信. 如果线程不够用了, 就不能建立连接了. 客户端只能等待. 同步说的其实是 阅读全文
posted @ 2020-03-01 15:23 Sniper_ZL 阅读(415) 评论(0) 推荐(0)
摘要:disruptor 可以理解为一个生产消费的框架. 具体翻译教程: http://ifeve.com/disruptor-getting-started/ 这个框架从数据上看, 是很强大的. 号称1s处理600万数据(不是消费掉600万). 这里学习一下. 一. Hello World 数据容器: 阅读全文
posted @ 2020-02-28 16:35 Sniper_ZL 阅读(1114) 评论(0) 推荐(0)
摘要:通过多线程实现一个简单的生产者-消费者案例(笔记). 首先定义一个要生产消费的数据类 : public class Data { private String id; private String name; public Data(String id, String name) { this.id 阅读全文
posted @ 2020-02-26 20:10 Sniper_ZL 阅读(363) 评论(0) 推荐(0)
摘要:多线程的 Master-Worker 从字面上也是可以理解的. Master 相当于领导, 一个就够了, 如果是多个, 那么听谁的, 是个大问题. Master负责指派任务给 Worker. 然后对每个人完成的情况进行汇总. Worker 相当于具体干活的人, 完成领导分配的任务, 然后把成果交给领 阅读全文
posted @ 2020-02-26 20:08 Sniper_ZL 阅读(444) 评论(0) 推荐(0)
摘要:单例创建实例, 网上有很多的例子, 我这里也只是做一下笔记. 可能并不比别人的详细. 主要是为了自己做点云笔记. 1. 饿汉式 public class Ehan { //1. 提供一个静态实例 private final static Ehan instance = new Ehan(); //2 阅读全文
posted @ 2020-02-24 18:04 Sniper_ZL 阅读(200) 评论(0) 推荐(0)