栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

8-「季淳卿」NIO New (Non-Blocking IO) 同步非阻塞IO 案例

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

8-「季淳卿」NIO New (Non-Blocking IO) 同步非阻塞IO 案例

java大型游戏和服务器都是基于NIO,由选择器选择那个时间段对那个通道进行操作
1.2.1 Channel 通道,渠道
- 不管是那种媒介,都可以用Channel通道
- <是双向通道,即可输出,也可输入>

1.2.2 Buffer 缓冲区(难理解)
- 所有通道都写在Buffer里面
- - 专门在NIO中保存数据(存放数据的地方)

Buffer创建有两种方式

allocate 在堆空间分配数据空间 (new一个区域给buffer)

    java全部的对象都是放在堆空间,而堆空间是运行在Java的JVM虚拟机中,用来保存数据的JVM 虚拟机 -软件 -运行在内存里面

allocateDirect 直接在内存分配空间 (直接跳开JVM,在内存中开辟一个空间)

优缺点:

- allocate

因为是分配在虚拟机jvm堆空间,不用的时候,内容会被垃圾回收机制自动回收

还要在jvm处理,数据处理慢,效率低

- allocateDirect

由于是分配在内存中,会把内存打满,需要我们手动去清理数据处理块 ,处理效率高

1.2.3 Selector 选择器
- 调动员(如:飞机从那个通道去起飞,降落在哪里)
- 调用 通道


使用到的方法如下:

ByteBuffer —— 方法描述
allocate(int capacity)分配一个新的字节缓冲区
allocate Direct(int capacity)分配一个新的直接字节缓冲区
put(byte [ ] b)是把内容写到缓冲区
get(byte[ ] dst )返回当前缓冲区位置上的值
String —— 方法描述
getBytes()把String字符串转为Byte字节数组
Buffer —— 方法描述
flip()翻转这个缓冲区

& - [ 代码 ] buffer 的使用、创建、切换

    创建一个字节缓冲区写一个spring内容把spring中的内容写到缓冲区(注意ByteBuffer需要的是字节类型)切换为读模式new一个字符数组从buffer中取出数据查看就需要new一个Spring数组
```php

```java
public static void main(String[] args) {

    

    ByteBuffer allocate = ByteBuffer.allocate(256);// allocate() 创建一个 字节缓冲区

    String data = "世界灿烂盛大,欢迎回家"; // 一个汉字 = 三个字节 = 八二位(二进制)
    //byteBuffer 由两种模式 : 读和写 ,默认的是写模式
    //因为 ByteBuffer需要的是字节类型 ,所有使用 getBytes() 所有把 String字符串转为 Byte字节数组写
    allocate.put(data.getBytes());// put() 是把内容写到缓冲区

    System.out.println(allocate.position());//位置
    System.out.println(allocate.limit());//阀值
    System.out.println(allocate.capacity());//容量

    allocate.flip();//切换为读模式
    System.out.println(allocate.position());
    System.out.println(allocate.limit());
    System.out.println(allocate.capacity());

    byte[] readdata = new byte[27];
    allocate.get(readdata);// 需要传入一个空的字节数组) 从buffer里面 读取指定长度的数据

    String str = new String(readdata);//想查看字节数组里面的值 就必须转换为字符串
    System.out.println(str);
}

今天学习结束啦✿✿ヽ(°▽°)ノ✿
有什么问题欢迎大家提出来,一起进步

世界灿烂盛大,欢迎回家 —— 《全球高考》

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/770791.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号