初识Mina,简要记录理解内容和实现demo。 这里先简述一下BIO和NIO的区别: 同步阻塞IO(BIO):一个连接一个线程,客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,可以通过线程池机制改善。 同步非阻塞IO(NIO):一个请求一个线程, ...
分类:
其他好文 时间:
2018-07-17 18:16:41
阅读次数:
178
一:正常访问(同一线程中多个请求是同步阻塞状态) 我们先访问index,再去访问main,查看情况 二:使用future模块,实现异步非阻塞 三:在tornado中使用异步IO请求模块 四:请求间交互,使用future 我们可以在另一个请求中去为这个future中result赋值,使当前请求返回 五 ...
分类:
编程语言 时间:
2018-06-30 14:50:58
阅读次数:
199
基本概念 阻塞和非阻塞 同步和异步 IO模型 同步阻塞IO(JAVA BIO): 在此种方式下,用户进程在发起一个IO操作以后,必须等待IO操作的完成,只有当真正完成了IO操作以后,用户进程才能运行。JAVA传统的IO模型属于此种方式! 同步非阻塞IO(Java NIO) 用户进程发起一个IO操作以 ...
分类:
编程语言 时间:
2018-06-27 14:07:11
阅读次数:
226
BIO: 同步阻塞 用户进程发起一个IO操作以后,必须等待IO操作的完成,只有当真正完成了IO操作以后,用户进程才能运行。 服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,可以通过线程池机制改善 NIO:同步非 ...
分类:
其他好文 时间:
2018-06-17 22:30:49
阅读次数:
193
1.线程状态 2.线程互斥所同步控制 a同时间可能有多个线程在锁定池中,它们处于同步阻塞状态竞争锁定; b同时间只能有一个线程获得锁定处于状态; 3.条件变量(线程通信) ...
分类:
编程语言 时间:
2018-06-17 21:20:14
阅读次数:
135
一、BIO、NIO、AIO的基本定义与类比描述: BIO (Blocking I/O):同步阻塞I/O模式,数据的读取写入必须阻塞在一个线程内等待其完成。这里使用那个经典的烧开水例子,这里假设一个烧开水的场景,有一排水壶在烧开水,BIO的工作模式就是, 叫一个线程停留在一个水壶那,直到这个水壶烧开, ...
分类:
其他好文 时间:
2018-06-14 11:28:25
阅读次数:
321
传统BIO模式 服务端ServerSocket负责绑定IP地址,启动监听端口。客户端Socket负责发起连接操作,服务端接受到连接请求后为每个客户端创建一个新的线程进行链路处理,连路处理通过输入和输出流进行同步阻塞式通信。 该模型最大的问题就是缺乏弹性伸缩能力,当客户端并发访问量增加后,服务端的线程 ...
分类:
编程语言 时间:
2018-06-12 13:37:29
阅读次数:
205
Java IO 方式有很多种,基于不同的 IO 抽象模型和交互方式,可以进行简单区分。 传统的 java.io 包,它基于流模型实现,提供了我们最熟知的一些 IO 功能,比如 File 抽象、输入输出流等。交互方式是同步、阻塞的方式,也就是说,在读取输入流或者写入输出流时,在读、写动作完成之前,线程 ...
分类:
编程语言 时间:
2018-06-01 13:36:05
阅读次数:
183
IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。 一、BIO 在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要对每个请求建立一堆线程等待 ...
分类:
其他好文 时间:
2018-05-19 23:29:25
阅读次数:
226
1. BIO JDK5之前, JDK的IO模式只有BIO(同步阻塞)问题: 因为阻塞的存在, 需对每个请求开启一个线程. 过多的线程切换影响操作系统性能解决: 使用线程池, 处理不过来的放入队列, 再处理不过来的会触发其他机制问题: 超过线程池数量的请求需要等待 服务端1: 一个请求~一个线程 服务 ...
分类:
编程语言 时间:
2018-05-18 11:23:06
阅读次数:
317