关于java IO和NIO的文章早已是非常多了,本文是对我个人过往学习java的相关经验,理解及应用IO和NIO的一个总结。此文内容涉及IO和NIO的基本该男,以及什么是IO?什么是NIO?希望对大家有所帮助。
java IO和NIO的区别是什么?
Java中IO和NIO的主要区别,如图:
1、面向流与面向缓冲
IO是面向流的,NIO是面向缓冲区的。
Java IO面向流意味着每次从流中读一个或多个字节,直至读取所有字节,它们没有被缓存在任何地方。
Java NIO的缓冲导向方法略有不同。数据读取到一个它稍后处理的缓冲区,需要时可在缓冲区中前后移动。
2、阻塞与非阻塞IO
Java IO的各种流是阻塞的。当一个线程调用read() 或 write()时,该线程被阻塞,直到有一些数据被读取,或数据完全写入。
Java NIO的非阻塞模式,使一个线程从某通道发送请求读取数据,但是它仅能得到目前可用的数据,如果目前没有数据可用时,就什么都不会获取,而不是保持线程阻塞,所以直至数据变的可以读取之前,该线程可以继续做其他的事情。
3、选择器
Java NIO的选择器允许一个单独的线程来监视多个输入通道,你可以注册多个通道使用一个选择器,然后使用一个单独的线程来“选择”通道:这些通道里已经有可以处理的输入,或者选择已准备写入的通道。这种选择机制,使得一个单独的线程很容易来管理多个通道。
(一). 基础
1、Java 基本功
- Java 入门(基础概念与常识)
- Java 语法
- 基本数据类型
- 方法(函数)
2、Java 面向对象
- 类和对象
- 面向对象三大特征
- 修饰符
- 接口和抽象类
- 其它重要知识点
3、Java 核心技术
- 集合
- 异常
- 多线程
- 文件与 I\O 流
(二). 并发
1、并发容器
- JDK 提供的并发容器总结
- ConcurrentHashMap
- CopyOnWriteArrayList
- ConcurrentLinkedQueue
- BlockingQueue
- ConcurrentSkipListMap
2、线程池
- 使用线程池的好处
- Executor 框架
- (重要)ThreadPoolExecutor 类简单介绍
- (重要)ThreadPoolExecutor 使用示例
- 几种常见的线程池详解
- ScheduledThreadPoolExecutor 详解
- 线程池大小确定
3、乐观锁与悲观锁
- 何谓悲观锁与乐观锁
- 乐观锁常见的两种实现方式
- 乐观锁的缺点
- CAS与synchronized的使用情景
(三). JVM
1、Java内存区域
- 概述
- 运行时数据区域
- HotSpot 虚拟机对象探秘
- 重点补充内容
2、JVM垃圾回收
- 揭开 JVM 内存分配与回收的神秘面纱
- 对象已经死亡?
- 垃圾收集算法
- 垃圾收集器
3、JDK 监控和故障处理工具
- JDK 命令行工具
- JDK 可视化分析工具
(四)网络、linux、数据结构与算法、数据库、系统设计、必会工具、面试指南
因为篇幅有限,其他内容就不一一展示了,这本进阶笔记总共有512页。对于想要进阶的小伙伴来说应该会很有帮助,希望也能帮助到你。
需要的小伙伴可以点击下面的名片免费领取。