0
点赞
收藏
分享

微信扫一扫

java IO和NIO的区别是什么?

关于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页。对于想要进阶的小伙伴来说应该会很有帮助,希望也能帮助到你。

需要的小伙伴可以点击下面的名片免费领取。

举报

相关推荐

0 条评论