Java基础入门(十八)之NIO
- NIO的简介
1.java.nio 全称 java non-blocking IO 是jdk1.4之后出现的 New IO为所有的原始类型(boolean除外)提供了缓存支持 使用它 可以提供非阻塞式的高伸缩性网络
2.NIO由三个核心部分组成Channel 管道/通道 Buffer 缓冲区 Selector 选择器
普通IO NIO
面向流 面向缓冲区
阻塞IO 非阻塞
没有选择器 选择器Selector
- 阻塞和非阻塞:
阻塞:
Scanner sc = new Scanner(System.in) int i = sc.nextInt();
阻塞是强调运行结果 在返回之前 当前线程会被挂起 一直处于等待状态 不能执行其他任务 函数只有在得到结果之后 才会返回 阻塞式IO 指的是 “一旦输入/输出工作没有完成 则程序阻塞 直到输入/输出完成为止” 不见黄河不死心
非阻塞:
非阻塞和阻塞的概念是相对应的非阻塞IO其实并非完全非阻塞 通常情况下 都是通过设置超时来读取数据的未超时之前 程序阻塞超时之后 程序结束
Buffer:
缓冲区 本质上是一块可以存储数据的内存把这块区域封装成了一个Buffer对象Java NIO中涉及到的Buffer实现:
Selector:
实现监听的效果通过一个线程管理多个Channel从而管理多个网络连接的目的 它是Java NIO核心组件中的一个 用于检查一个或者多个NIO
Channel的状态是否处于可读 可写 我们可以将Channle注册到Selector中 以实现Selector对其管理的目的
- Buffer的使用
Java NIO 的Buffer 用于 和 NIO通道进行交互 数据从通道读入缓冲区 从缓冲区写出到通道中
- 常用方法:
allocate(大小)
分配一块指定大小的缓冲区
put()
向缓冲区写数据
get()
从缓冲区读数据
flip()
切换读写模式
clear()
清空
capacity()
获取缓冲区大小
position()
获取数据存储位置
limit()
长度
- 作用:
1.将position设置为0
2.把limit设置为原position的值 存了多少数据
使用步骤:
1.创建Buffer缓冲区
2.写入数据到Buffer
3.调用flip()方法 切换读写模式
4.从Buffer中读取数据
5.调用clear()方法 清空缓冲区
- FileChannel的使用
java NIO 中的FileChannel 是一个连接文件的通道可以通过通道 读写文件 在使用FileChannel之前 必须先打开它
方法:
1.可以通过 FileInputStream/FileOutputStream 来获取
FileChannel getChannel()方法
2.调用 FileChannel中的静态open()方法 打开通道static FileChannel open(Path path,OpenOption...options);
Paths 工厂类中 的方法static Path get(URI uri)
将给定的URI转换为Path对象。
- 案例
写入文本文件
读取文本文件
复制图片
Java基础入门(十八)之NIO相关推荐
- 夯实Java基础(十八)——泛型
1.什么是泛型 泛型是Java1.5中出现的新特性,也是最重要的一个特性.泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数.这种参数类型可以用在类.接口和方法的创建中,分别称为泛型类. ...
- 重学java基础第十八课:卸载jdk和安装jdk
- JAVA 基础 / 第二十八课:接口与继承 / 如何设计JAVA的接口?
2018-03-19 在设计LOL的时候,进攻类英雄有两种,一种是进行物理系攻击,一种是进行魔法系攻击.这时候,就可以使用接口来实现这个效果. 接口就像是一种约定,我们约定某些英雄是物理系英雄,那么 ...
- Java基础入门必备词汇汇
#Java基础入门必备词汇汇 一 1.Public ['pʌblik] 公开 2.Static ['stætik] 静态 3.void [vɔid] 无返回 4.main [main] 主要的,主方法 ...
- Java 基础入门,小白提升路线图
1000+最新Java面试题 获取学习路线资料啦 Java的基础知识就像我们所住的房子的地基,如果地基不稳,上面所盖的楼房再宏伟,也是没人敢去入住的,同理Java的基础不牢固,以后也很难成为真正意义上 ...
- Java基础入门--学习笔记
Java基础入门教程 itheima–java基础小白教程 学习配套软件:eclipse 1.基础知识 (1)常用DOS命令:切换盘–>E:,cd–>进入文件,可多级,cd - --> ...
- Java基础入门-详细总结
Java基础入门知识总结 一.java基础 1.1 java基础知识 1.2java的基本数据类型 1.3运算符 1.4循环结构 1.5数组 二.面向对象 2.1方法 2.2面向对象 2.3内存管理 ...
- 叮!您收到一份超值Java基础入门资料!
摘要:Java语言有什么特点?如何最大效率的学习?深浅拷贝到底有何区别?阿里巴巴高级开发工程师为大家带来Java系统解读,带你掌握Java技术要领,突破重点难点,入门面向对象编程,以详细示例带领大家J ...
- java基础入门课后习题_《Java基础入门》课后习题及答案
<Java基础入门>课后习题及答案Java基础入门,课后习题,答案 博学谷--让IT教学更简单,让IT学习更有效 <Java基础入门>课后习题 第1章Java开发入门 一.填空 ...
- 叮!您收到一份超值Java基础入门资料! 1
Java语言有什么特点?如何最大效率的学习?深浅拷贝到底有何区别?阿里巴巴高级开发工程师为大家带来Java系统解读,带你掌握Java技术要领,突破重点难点,入门面向对象编程,以详细示例带领大家Java ...
最新文章
- [kuangbin带你飞]专题五 并查集 E - 食物链 (带权并查集)
- sql查两个时间内的数据_如何通过AWR的sql脚本查执行时间、消耗CPU、gets、I/0等的sql?...
- Python 技术篇-用os库实现删除本地文件、非空文件夹方法,python判断本地文件、文件夹是否存在方法
- 身边的设计模式(三):抽象工厂 与 依赖注入
- 历史上的今天:雅虎正式成立;PC 设计先驱诞生;Excite@Home 破产
- 据说学编程的计算这题不超1分钟!
- java核心技术卷2 第9版 pdf,Java核心技术 卷II 高级特性(原书第9版) PDF
- html 分割字符串,详解js常用分割取字符串的方法
- 数据库的基本操作和约束
- C语言程序设计实验报告——实验七
- Unity实现在白板上绘画涂鸦
- PDF文件如何编辑?这两种方法是我一直在用的
- 微信小程序答题页——swiper渲染优化及swiper分页实现
- 一步一步教你安装MeeGO和Windows 7双系统(上网本或笔记本)
- 一、jSP简介(前置知识)
- AD域实现统一用户管理
- Java字符串首尾显示,中间隐藏
- 会议及作用篇--项目管理(十七)
- JavaWeb学习之入门
- C# 飞行棋小游戏 (控制台应用)
热门文章
- C#获取gridview选择check打勾行数据
- kali linux不用网卡驱动,Kali Linux ——在无网络情况下安装无线网卡驱动
- GPS时间转化成标准时间格式
- 通达OA 与中控考勤机同步 最优http方案 附源码
- homeassistant智能家居
- vChain: Enabling Verifiable Boolean Range Queries over Blockchain Databases
- 电子计算机成为通用计算机器,第5讲程序与处理器.pptx
- 基于javaweb+jsp的工作日志管理系统
- 读书百客:《感遇·兰叶春葳蕤》赏析
- linux系统远程桌面