
Java nio
iteye_6926
这个作者很懒,什么都没留下…
展开
-
Java NIO使用及原理分析 (一)
本文为NIO使用及原理分析的第一篇,将会介绍NIO中几个重要的概念。在Java1.4之前的I/O系统中,提供的都是面向流的I/O系统,系统一次一个字节地处理数据,一个输入流产生一个字节的数据,一个输出流消费一个字节的数据,面向流的I/O速度非常慢,而在Java 1.4中推出了NIO,这是一个面向块的I/O系统,系统以块的方式处理处理,每一个操作在一步中产生或者消费一个数据库,按块处理要比按字节...原创 2016-02-22 22:55:24 · 94 阅读 · 0 评论 -
Java NIO使用及原理分析(二)
在第一篇中,我们介绍了NIO中的两个核心对象:缓冲区和通道,在谈到缓冲区时,我们说缓冲区对象本质上是一个数组,但它其实是一个特殊的数组,缓冲区对象内置了一些机制,能够跟踪和记录缓冲区的状态变化情况,如果我们使用get()方法从缓冲区获取数据或者使用put()方法把数据写入缓冲区,都会引起缓冲区状态的变化。本文为NIO使用及原理分析的第二篇,将会分析NIO中的Buffer对象。在缓冲区中,最重要...原创 2016-02-23 22:24:38 · 88 阅读 · 0 评论 -
Java NIO使用及原理分析(三)
在上一篇文章中介绍了缓冲区内部对于状态变化的跟踪机制,而对于NIO中缓冲区来说,还有很多的内容值的学习,如缓冲区的分片与数据共享,只读缓冲区等。在本文中我们来看一下缓冲区一些更细节的内容。[b]缓冲区的分配[/b]在前面的几个例子中,我们已经看过了,在创建一个缓冲区对象时,会调用静态方法allocate()来指定缓冲区的容量,其实调用 allocate()相当于创建了一个指定大小的数组...原创 2016-02-23 22:56:01 · 88 阅读 · 0 评论 -
几个I/O模型的功能和特性对比
[size=small]BIO:Block IO 传统的阻塞模型(ServerSocket/Socket),一个客户端对应一个I/O线程,为同步I/O,[b]使用简单,可靠性非常差,吞吐量低[/b]。伪异步I/O:线程池+阻塞队列。为同步I/O,[b]使用简单,可靠性差,吞吐量中。[/b]非阻塞I/O(NIO):M:1(一个客户端线程(反应器)处理多个客户端连接,然后在调用业务线程...原创 2016-03-27 19:52:14 · 161 阅读 · 0 评论 -
volatile的作用和使用场景
[size=medium]1、线程可见性,volatile修饰的变量是存放在主内存区域,其他地方使用该变量也是直接从主内存区域获取数据,所以无论线程是否同步,任何使用该变量的地方都可以获取到最新的值。2、禁止指令重排序。volatile最适合的应用场景:1、一个线程写,其他线程读的场合,如果存在多个线程的并发写操作,仍然需要使用锁或者线程安全的容器或者原子变量来代替。2、可能存...原创 2016-05-07 17:00:22 · 290 阅读 · 0 评论