java io流重要吗,java处理io的方式都有哪几种

  java io流重要吗,java处理io的方式都有哪几种

  Java的IO流是实现输入/输出的基础,它可以方便地实现数据的输入/输出操作,在Java中把不同的输入/输出源抽象表述为"流"。

  流是一组有序的字节,是数据传输的总称或抽象。

  流有输入和输出。输入时,流从数据源流向程序。当输出是从程序到数据源时,数据源可以是内存、文件、网络或程序。

  如何解决写爬虫IP受阻的问题?立即使用。

  用户进程和操作系统内核

  Java中的IO可以理解为在Java程序和操作系统内核之间进行。

  后面提到的阻塞与非阻塞,同步与异步,都是这两个对象相互作用的结果。在本文中,用户进程指的是Java程序。

  程序空间和内核空间

  等待数据准备就绪(等待数据到达内核缓冲区)

  将数据从内核复制到进程(将数据从内核缓冲区复制到程序缓冲区)

  在Linux中,对于读IO操作,数据并不直接复制到程序的程序缓冲区。

  会先拷贝到操作系统内核的缓冲区,再从操作系统内核的缓冲区拷贝到应用程序的缓冲区。

  程序空间:分配给用户程序的内存空间。

  内核空间:内核拥有的内存空间。

  阻塞和非阻塞

  阻塞:用户进程进行系统调用后,用户进程始终被锁定,无法执行其他操作。

  非阻塞:用户进程进行系统调用后,用户进程不被锁定,可以执行其他操作。

  阻塞和非阻塞指的是用户进程的状态,即用户进程是否被锁定。

  同步和异步

  同步I/O操作导致请求进程被阻塞,直到该I/O操作完成。

  异步I/O操作不会导致请求进程被阻塞。

  同步io操作将导致请求进程阻塞,直到io操作完成。异步io操作不会导致请求的线程被阻塞。

  同步:用户线程和io线程做同样的事情(用户线程被阻塞,等待内核返回处理结果)

  异步:用户线程和io线程做不同的事情(用户线程没有被阻塞,做其他事情,内核处理并将结果发送给用户线程)

  文件描述符

  所有东西都在Linux下存档。文件描述符是内核为文件创建的索引,所有的I/O操作都是通过调用文件描述符来执行的,包括我们下面要提到的socket。Linux启动时会自动设置0为标准输入,1为标准输出,2为标准误差。这就是java io为什么重要的细节。更多请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: