![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
NIO
文章平均质量分 83
iteye_19607
这个作者很懒,什么都没留下…
展开
-
NIO部分:DatagramChannel实例
package com.test.socket;import java.net.DatagramSocket;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.CharBuffer;import java.nio.channels.DatagramChannel;...原创 2013-04-01 21:36:26 · 159 阅读 · 0 评论 -
NIO-Pile通道详解
Pipe实现单向管道传送的通道对等端.管道是由两端组成:一个可写入的sink通道和一个可读取的source通道(根据数据来源).一旦将某些字节写入接受器通道,就可以按照与写入时完全相同的顺序从源通道中读取这些字节.在另一个线程从管道中读取这些字节或先前已写入的字节之前,是否阻塞将该字节写入管道的线程是与系统相关的,因此是未指定的.Pipe名为管道,其实底层实现为一个本地的TCP链接:即一个侦听...原创 2013-04-05 08:35:44 · 135 阅读 · 0 评论 -
NIO-FileChannel详解
一.FileLock(通道文件锁,记录区域锁):表示文件区域锁定标记.FileLock并没有实现lock接口,它仅仅是一个辅助锁操作类.每次通过FileChannel.lock()或者tryLock()获取文件锁.一旦获取锁,那么lock将持续有效,直到被release(),以及JVM退出.可以通过对fileLock.isValid()检测锁的有效性.文件锁要么是独占的,有么是共享的.共享锁可...原创 2013-04-05 08:35:20 · 420 阅读 · 0 评论 -
NIO中Channel.spi学习
一.channel.spi底层实现我们首先看看SelectorProvider:SelectorProvider提供了通过底层输出各种NIO实现的接口:public abstract DatagramChannel openDatagramChannel():创建并打开一个DatagramChannel...DatagramChannel.open()方法调用.public abst...原创 2013-04-05 08:34:54 · 266 阅读 · 0 评论 -
NIO-ServerSocketChannel详解
ServerSocketChannel类似于SocketChannel[参考:http://shift-alt-ctrl.iteye.com/blog/1840409],只不过ServerSocketChannel使用server端.ServerSocketChannel是ServerSocket + Selector的高层封装.可以通过socket()方法获得与其关联的ServerSocke...原创 2013-04-05 08:34:24 · 508 阅读 · 0 评论 -
NIO-Selector类详解
Selector本身为抽象类,AbstractSelector是Selector类的抽象实现类,具体的实现类更加底层(SelectorImpl,位于sun.nio.ch);Selector即为"选择器",支撑了NIO的多路复用.Selector不能直接创建,需要通过Selector.open()获得,该方法将使用系统默认的选择器提供者创建新的选择器(SelectorProvider),可以通过...原创 2013-04-03 13:55:18 · 671 阅读 · 0 评论 -
NIO-SocketChannel详解
SocketChannel为JAVA-NIO中核心类,它实现了SelectableChannel/ScatteringByteChannel/GatheringByteChannel.不过它仍然为一个抽象类.实现层将会有JVM在运行时选择.(参见下文) SocketChannel只不过是Socket通讯 + Selector机制的抽象层API,底层的通讯仍需要socket支持.可以...原创 2013-04-03 11:37:50 · 805 阅读 · 0 评论 -
NIO-SelectableChannel详解
SelectableChannel("可被选择"通道):抽象类,此类实现了InterruptableChannel接口."可选择"通道,就是noblocking通道,它的实现需要Selector的支持.因此这些Channel取名为"SelectableChannel"是可以理解的.为 了和Selector(选择器)一起使用,此类的实例必须首先通过register方法进行注册.此方法返回一个...原创 2013-04-03 11:20:41 · 737 阅读 · 0 评论 -
NIO-Channel相关接口详解
一.Channel相关接口(概述):NIO中核心的API,它被底层操作封装,提供了数据进行NIO操作的"途径",可以配合Selector实现多路IO复用/非阻塞操作.Channel(通道)表示实体(例如硬件设备,文件,网络socket等)的开放链接.Channel与其实体关联,并具有相同的状态,例如关闭或者开启.Channels可以是异步的(noblocking),可中断的(iner...原创 2013-04-03 11:18:45 · 342 阅读 · 0 评论 -
NIO-BUFFER详解
一.Buffer类(抽象): 一个用于特定基本数据的容器.buffer即为特定基本类型元素的线性存储容器,底层通过数组结构支撑.buffer具有数据的很多特征,如容量,限制(limit),位置(postion),以及方便操作的"标记"(mark). 容量:capacity,即buffer所能承载的最大数据元素个数.一个buffer一旦创建,capacity将无法被修改...原创 2013-04-02 10:21:48 · 242 阅读 · 0 评论 -
JAVA-NIO程序设计完整实例
NIO-Socket通讯,为我们解决了server端多线程设计方面的性能/吞吐量等多方面的问题,它提供了以非阻塞模式 + 线程池的方式来解决Server端高并发问题..NIO并不能显著的提升Client-server的通讯性能(其中包括全局性耗时总和,Server物理机资源开销和实际计算量),但是它可以确保Server端在支撑相应的并发量情况下,对物理资源的使用处于可控状态.对于开发者而言,N...原创 2013-04-02 10:06:11 · 186 阅读 · 0 评论 -
NIO部分:DatagramSocket实例
////////////////////////////Demopackage com.test.java;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.InetSocketAddress;publ...原创 2013-04-01 21:38:06 · 498 阅读 · 0 评论 -
NIO-DatagramChannel详解
DatagramChannel是NIO中面向Datagram(数据报)的套接字通道.底层为DatagramSocket + selector的高层封装.此接口仍然实现了SeletableChannel,ScatteringByteChannel, GatheringByteChannel . 可以通过DatagramChannel.open()方法打开获得通道,但此时尚未链接.Data...原创 2013-04-05 08:36:11 · 1305 阅读 · 0 评论