java nio
文章平均质量分 65
RB_VER
这个作者很懒,什么都没留下…
展开
-
Java NIO 聊天室案例
服务端:package javaniodemo.server;import java.io.IOException;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.channels.*;import java.nio.charset.Charset;import java.util.Iterator;import java.util.Set;public class ChatSer原创 2021-10-10 15:13:22 · 160 阅读 · 0 评论 -
Java NIO Charset
Java中使用Charset来表示字符集编码对象。Charset常用静态方法:public static Charset forName(String charsetName) //通过编码类型获得Charset对象public static SortedMap<String,Charset> availableCharsets() //获得系统支持的所有编码方式public static Charset defaultCharset() //获得虚拟机默认的编码方式public st原创 2021-09-24 16:27:46 · 614 阅读 · 0 评论 -
Java NIO AsynchronousFileChannel
AsynchronousFileChannel在Java 7中,Java NIO中添加了AsynchronousFileChannel,也就是异步地将数据写入文件。创建AsynchronousFileChannel通过静态方法open()创建Path path = Paths.get("d:\\qrxqrx\\01.txt");AsynchronousFileChannel fileChannel = AsynchronousFileChannel.open(path,StandardOpenOp原创 2021-09-24 16:02:31 · 147 阅读 · 0 评论 -
Java NIO Path和File
Path简介Java Path接口是Java NIO更新的一部分,同Java NIO一起包含在Java 6和Java 7中。Java Path接口是在Java 7中添加到NIO的。Path接口位于java.nio.file包中。所以Path接口的完全限定类名为java.nio.file.Path。Java Path实例表示文件系统中的路径。一个路径可以指向一个文件或一个目录。路径可以是绝对路径,也可以是相对路径。绝对路径包含从文件系统的根目录到它指向的文件或目录的完整路径。相对路径包含相对于其他路径的文原创 2021-09-24 11:10:21 · 466 阅读 · 0 评论 -
Java NIO FileLock
FileLock简介文件锁在OS中很常见,如果多个程序同时访问、修改一个文件,很容易因为文件数据不同步而出现问题。给文件加一个锁,同一时间,只能有一个程序修改此文件,或者程序都只能读此文件,这就解决了同步问题。文件锁是进程级别的,不是线程级别的。文件锁可以解决多个进程并发访问、修改同一文件的问题,但不能解决多线程并发访问、修改同一文件的问题。使用文件锁时,同一进程内的多个线程,可以同时访问、修改此文件。文件锁是当前程序所属的JVM实例持有的,一旦获取到文件锁,要调用release(),或者关闭对应的原创 2021-09-24 09:56:43 · 144 阅读 · 0 评论 -
Java NIO Pipe
PipeJava NIO管道是两个线程之间的单向数据连接。Pipe有一个source通道和一个sink通道。数据会被写到sink通道,从source通道读取。创建管道通过Pipe.open()方法打开管道。Pipe pipe = Pipe.open();写入管道要向管道写数据,需要访问sink管道:Pipe.SinkChannel sinkChannel = pipe(.sink();通过调用SinkChannel的write()方法,将数据写入SinkChannel:String原创 2021-09-24 08:54:18 · 79 阅读 · 0 评论 -
Java NIO Selector
Selector简介Selector和Channel关系Selector一般称为选择器,也可以翻译为多路复用器。它是Java NIO核心组件中的一个,用于检查一个或多个NIO Channel(通道)的状态是否处于可读、可写。如此可以实现单线程管理多个channels,也就是可以管理多个网络连接。使用Selector的好处在于:使用更少的线程来就可以处理通道了,相比使用多个线程,避免了线程上下文切换带来的开销。SelectableChannel(可选择通道)(1)不是所有的Channel都可以被S原创 2021-09-24 08:16:09 · 137 阅读 · 0 评论 -
Java NIO Buffer
Buffer简介Java NIO中的Buffer用于和NIO通道进行交互。数据是从通道读入缓冲区,缓冲区写入到通道中的。缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内存被包装成NIO Buffer对象,并提供了一组方法,用来方便的访问该块内存。缓冲区实际上是一个容器对象,更直接地说,其实就是一个数组,在NIO库中,所有数据都是用缓冲区处理。在读取数据时,它是直接读到缓冲区中的,在写入数据时,它也是写入到缓冲区中的;任何时候访问NIO中的数据,都是将它放到缓冲区中。而在面向流I/O系原创 2021-09-23 14:45:02 · 248 阅读 · 1 评论 -
Java NIO Channel
Channel概述Channel是一个通道,可以通过它读取与写入数据,它就像水管一样,网络数据通过Channel读取与写入。通道与流的不同之处在于通道是双向的,流只是在一个方向上移动,而通道可用于读、写或者同时用于读写。因为Channel是全双工的,所以它可以比流更好地映射底层操作系统的API。NIO中通过Channel封装了对数据源的操作,通过Channel我们可以操作数据源,但又不必关心数据源的具体物理结构。这个数据源可能是多种的。比如,可以是文件,也可以是网络socket。在大多数应用中,Chan原创 2021-09-23 08:41:16 · 115 阅读 · 0 评论 -
NIO概述
阻塞IO通常情况下在进行同步I/O操作时,如果读取数据,代码会阻塞直至有可供读取的数据。同样,写入调用将会阻塞直至数据能够写入。传统的Server/Client模式会基于TPR(Thread per Request),服务器会为每个客户端请求建立一个线程,由该线程单独负责处理一个客户请求。这种模式带来的一个问题就是线程数量的剧增,大量线程会增大服务器的开销,大多数的实现是为了避免这个问题,都采用了线程池模型,并设置线程池线程最大数量,这又带来了新的问题,如果线程池中有100个线程,而有100个用户都在进行原创 2021-09-16 09:47:04 · 174 阅读 · 0 评论