写作与程序JVM虚拟机&字节码底层术篇幅&JAVA进阶程序员

学习Java基础知识,打通面试关十~IO流

2018-06-05  本文已影响55人  胖琪的升级之路

在做大数据的时候刚开始把所有数据都存入lhbase中,结果导致hbase每天都有很多数据 而且key设置的是ip虽然散列了,但是随着数据量的增加,用spark查询是越来越慢,因为新学习当时没有了解到Hbase的具体存储模式。在知道之后,就考虑写文件的方式。这个只是暂时想出来的方案。后来改成写Hadoop文件。
我们经常用的IO 大部分都是BIO,但是在我们提高性能的方式上都是AIO,NIO.他们有什么区别呢?我们今天就来看看。

明白两个概念

BIO

在jdk1.4版本之前我们大部分都是采用的BIO,这是一种同步阻塞的的io方式,比我们经常用到的ServerSocket,就是处于等待的阻塞的。只要有请求过来才执行。该方式造成的就是性能上损耗很大。

NIO

NIO在操作上主要是用来解决我们上面说的并发问题,如果有多个访问过来在AIO只能是等待的上一个链接请求结束后才能操作。

NIO是基于Reactor的,在处理的时候NIO是使用单线程或者少量的多线程来操作的。这样就降低了系统的压力。 NIO
在NIO中主要有以下几个内容需要注意的 : 流程

AIO

其实AIO是在NIO的基础上更近了一步,解决了NIO的同步情况。在这种情况下对IO的操作都是异步的。不需要进行等待。就能提高性能。通过调用回调函数来实现对异步操作结果的获取。

总结

Java对BIO、NIO、AIO的支持:

BIO、NIO、AIO适用场景分析:

上一篇下一篇

猜你喜欢

热点阅读