JavaNIO

Java New IO 简称 nio,在jdk1.4提供了新的api,有如下特性:

1.为所有原始类型提供缓存支持

2.字符集编解码解决方案

3.Channel:新的原始io抽象

4.支持锁和内存映射的访问接口

5.提供多路(non-bloking)非阻塞式多路高伸缩性网络io

原始io与nio比较:

1.原始java.io.*包库与nio最重要的区别是数据打包和传输方式,io中使用流的方式处理数据,nio中使用块的方式处理数据。

流:流方式处理数据是输入一个字节,输出一个字节。处理比较慢

块:块的方式处理数据每步操作产生或者消费一个数据块,处理速度快。

数据缓冲区:

找了个博客,里面有比较详细的介绍,就不写了http://www.cnblogs.com/chenpi/p/6475510.html

时间: 2024-11-08 00:00:27

JavaNIO的相关文章

JavaNIO(一)(IO基本概念扫盲篇)

一.基本IO概念 1.什么是流IO? 1.1 基本概念 流是一种抽象概念,它代表了数据的无 结构化传递. 按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列.从流中取得数据的操作称为提取操作,而 向流中添加数据的操作称为插入操作.用来进行输入输出操作的流就称为IO流.换句话说,IO流就是以流的方式进行输入输出.输入输出(IO)是指计算机同 任何外部设备之间的数据传递.常见的输入输出设备有文件.键盘.打印机.屏幕等.数据可以按记录(或称数据块)的方式传递,也可以流的方式传递. 1.2 形

javaNIO原理(含代码)及与 同步阻塞IO 、伪异步IO比较

一.同步阻塞IO BIO就是阻塞式的IO,网络通信中对于多客户端的连入,服务器端总是与客户端数量一致的线程去处理每个客户端任务,即,客户端与线程数1:1,并且进行读写操作室阻塞的,当有你成千上完的客户端进行连接,就导致服务器不断的建立新的线程,最后导致低通资源不足,后面的客户端不能连接服务器,并且连接入的客户端并不是总是在于服务器进行交互,很可能就只是占用着资源而已. 二.伪异步IO 伪异步IO对同步IO进行了优化,后端通过一个线程池和任务队列去处理所有客户端的请求,当用完后在归还给线程池,线程

javaNIO(转载)

(一) Java NIO 概述 Java NIO 由以下几个核心部分组成: Channels Buffers Selectors 虽然Java NIO 中除此之外还有很多类和组件,但在我看来,Channel,Buffer 和 Selector 构成了核心的API.其它组件,如Pipe和FileLock,只不过是与三个核心组件共同使用的工具类.因此,在概述中我将集中在这三个组件上.其它组 件会在单独的章节中讲到. Channel 和 Buffer 基本上,所有的 IO 在NIO 中都从一个Chan

JavaNio 基础教程

转自http://www.iteye.com/magazines/132-Java-NIO?page=2#586 Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API.本系列教程将有助于你学习和理解Java NIO. Java NIO提供了与标准IO不同的IO工作方式:? Channels and Buffers(通道和缓冲区):标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(Buffe

JavaNIO中的内存映射io

客户端代码: package cc.client; import java.io.*; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.MappedByteBuffer; import java.nio.channels.*; public class ClientOper { public static void main(String[] args) throws IOExcepti

javaNIO核心概念

在java的阻塞IO中使用InputStream和outputStream来进行输入和输出,那么两种流是相互独立使用的,而且每次数据传输都要通过“用户态数据”向“os内核态数据”copy或从“os内核态数据”向“用户态数据”copy: 而在javaNIO中我们的核心对象变为channel,select,buffer.那么数据交互的核心是channel和buffer,我们可以通过Stream获取channel也就相当于获取到文件与内存中的数据通道,那么在通道中可以通过buffer相互传递数据,这个

Java-NIO(八):DatagramChannel

Java NIO中的DatagramChannel是一个能收发UDP包的通道.操作步骤: 1)打开 DatagramChannel 2)接收/发送数据 同样它也支持NIO的非阻塞模式操作,例如: 1 @Test 2 public void send() throws IOException { 3 DatagramChannel channel = DatagramChannel.open(); 4 channel.configureBlocking(false); 5 6 ByteBuffer

JavaNIO缓冲区

package com.nio.test; import java.nio.ByteBuffer; import org.junit.Test; /** * * @author fliay * * 一.缓冲区(buffer) * 根据数据类型不同(boolean)除外,提供了相应类型的缓冲区: * ByteBuffer * CharBuffer * ShortBuffer * IntBuffer * LongBuffer * FloatBuffer * BoubleBuffer * 上述缓冲区的

Java-NIO(九):管道 (Pipe)

Java NIO 管道是2个线程之间的单向数据连接.Pipe有一个source通道和一个sink通道.数据会被写到sink通道,从source通道读取. 代码使用示例: 1 @Test 2 public void testPipe() throws IOException { 3 // 1.获取通道 4 Pipe pipe = Pipe.open(); 5 6 // 2.获取sink管道,用来传送数据 7 Pipe.SinkChannel sinkChannel = pipe.sink(); 8

Java-NIO(一):简介

Java NIO简介: Java New IO Non Blocking IO,从java1.4版本就开始引入了新的IO API,可以替代标准的Java IO API.NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的.基于通道的IO操作.NIO将更加高效的方式进行文件的读写操作. Java NIO与IO的区别: IO NIO 面向流(Stream Oriented) 面向缓冲区(Buffer Oriented) 阻塞IO(Blocking IO) 非阻塞IO(