Java 7新特性总结

Wesley13
• 阅读 438

绝大多数应用程序在运行过程中都会进行两种类型的计算:一种是占用CPU时间的计算,另外一种是与数据输入/输出(I/O)相关的计算。在这两种计算中,一般是与I/O相关的计算所花费的时间占较大的比重。这其中的主要原因是在进行I/O操作时,一般需要竞争操作系统中有限的资源,或是需要等待速度较慢的外部设备完成其操作,从而造成I/O相关的计算所等待的时间较长。从性能优化的角度出发,提升I/O相关操作的性能会对应用程序的整体性能产生比较大的帮助。
最早的java.io包把I/O操作抽象成数据的流动,进而有了流(stream)的概念。在Java NIO中,则把I/O操作抽象成端到端的一个数据连接,这就有了通道(channel)的概念。

1. 流

Java中最基本的流是在字节这个层次上进行操作的。也就是说基本的流只负责在来源和目的之间传输字节,并不负责对字节的含义进行解释。在基本的字节流基础上,Java也提供了一些过滤流(filter stream)的实现。这些过滤流实际上是基本字节流上的一个封装,在其上增加了不同的处理能力,如基本类型与字节序列之间的转换等。这些过滤流对开发人员的接口更加友好,可以自动完成很多转换工作。

点赞
收藏
评论区
推荐文章
Kubrnete Kubrnete
3年前
高并发之网络IO基础
本篇文章是我在学习高并发问题时接触到的网络I/O相关知识,比较底层且纯理论,整合以作参考。下面长文预警。高并发基本表现为单位时间内系统能够同时处理的请求数核心是对CPU资源的有效压榨。注意,有效很重要。C10K问题C10K问题本质上是操作系统的问题。对于Web1.0/2.0时代的操作系统而言,传统的同步阻塞I/O模型都是一样的,
芝士年糕 芝士年糕
1年前
Nmon使用方法
一、简介1、nmon是一种在AIX与各种Linux操作系统上广泛使用的监控与分析工具,它能在系统运行过程中实时地捕捉系统资源的使用情况,记录的信息比较全面,并且能输出结果到文件中,然后通过nmonanalyzer工具产生数据文件与图形化结果。2、nmon可监控的数据类型内存使用情况磁盘适配器文件系统中的可用空间CPU使用率页面空间和页面速度异步I/O,仅适用
Wesley13 Wesley13
2年前
javaIO2
NIO新的输入/输出(NIO)库是在JDK1.4中引入的,弥补了原来的I/O的不足,提供了高速的、面向块的I/O。1.1流与块I/O与NIO最重要的区别是数据打包和传输的方式,I/O以流的方式处理数据,而NIO以块的方式处理数据。面向流的I/O一次处理一个字节数据:一个输入流产生一个字
Stella981 Stella981
2年前
CPU密集型 VS IO密集型
CPU密集型CPU密集型也叫计算密集型,指的是系统的硬盘、内存性能相对CPU要好很多,此时,系统运作大部分的状况是CPULoading100%,CPU要读/写I/O(硬盘/内存),I/O在很短的时间就可以完成,而CPU还有许多运算要处理,CPULoading很高。在多重程序系统中,大部份时间用来做计算、逻辑判
Wesley13 Wesley13
2年前
Java【NIO2】- 系列 1: 为什么要写【NIO2】系列?
1\. 基本概念IO是主存和外部设备(硬盘、终端和网络等)拷贝数据的过程。IO是操作系统的底层功能实现,底层通过I/O指令进行完成。所有语言运行时系统提供执行I/O较高级别的工具。(c的printfscanf,java的面向对象封装)2\.  Java标准io回顾Java标准
Stella981 Stella981
2年前
Redis和多路复用模型
作者:Rico原文:hogwartsrico.github.io/2020/06/24/RedisandMultiplexing/几种I/O模型为什么Redis中要使用I/O多路复用这种技术呢?首先,Redis是跑在单线程中的,所有的操作都是按照顺序线性执行的,但是由于读写操作等待用户输入或输出都是阻塞的
Stella981 Stella981
2年前
Guava库学习:学习Guava Files系列(一)
  对程序开发人员来说,文件的读写是很重要的一项技能。但是令人惊讶的是,尽管Java提供了一个丰富而健壮的I/O库,进行一些基本的文件操作却显得很繁琐。不过在Java7中已经发生了一些改变,但那些使用Java6的就不那么好运了。幸运的是,Guava做了一些我们期望I/O库做的事情,提供了一系列的工具,让我们能够更方便的进行I/O操作。本篇,我们就开
Wesley13 Wesley13
2年前
Java NIO之缓冲区
JavaNIO之Buffer  Java传统的I/O模型是面向单个字节的,它将输入输出抽象为字节流或字符流。这种单个字节的读取或写入模型的效率比较低,而且不符合操作系统的I/O特点。操作系统的IO是面向字节块的,通常是直接从磁盘中读取一块数据到内存或写入一块数据到磁盘。JavaNIO提供了缓冲区来实现字节块的读写。
Stella981 Stella981
2年前
Netty学习三:线程模型
1Proactor和ReactorProactor和Reactor是两种经典的多路复用I/O模型,主要用于在高并发、高吞吐量的环境中进行I/O处理。I/O多路复用机制都依赖于一个事件分发器,事件分离器把接收到的客户事件分发到不同的事件处理器中,如下图:!(https://oscimg.oschi
京东云开发者 京东云开发者
2个月前
spark为什么比mapreduce快?
spark为什么比mapreduce快?首先澄清几个误区:1:两者都是基于内存计算的,任何计算框架都肯定是基于内存的,所以网上说的spark是基于内存计算所以快,显然是错误的2;DAG计算模型减少的是磁盘I/O次数(相比于mapreduce计算模型而言),