• 腾讯JAVA后端秋招面试总结


    腾讯秋招的面经,岗位是 java 后端开发。

    说一下BIO、NIO和AIO

    答:
    • BIO是阻塞IO。在上一个线程的任务执行完之前,该线程必须阻塞等待上一个线程执行完毕。

    • NIO是非阻塞IO。一旦是响应事件发生了,该线程就会将对应的响应事件交给对应的事件处理器进行处理。

    • AIO是异步IO。主线程接收到请求后,可以分发给其他线程进行异步处理,主线程继续接收其他请求。

    补充:

    BIO(Blocking IO)、NIO(Non-Blocking IO)和AIO(Asynchronous IO)是Java中常用的IO模式。它们之间的主要区别在于IO的处理方式和效率。

    BIO是同步阻塞IO,在进行IO操作时,必须等待IO操作完成后才能进行下一步操作,这时线程会被阻塞。BIO适用于连接数比较小且固定的架构,由于线程阻塞等待IO操作,所以并发处理能力不强。

    NIO是同步非阻塞IO,可以支持多个连接同时进行读写操作,因此可以用较少的线程来处理大量的连接。NIO通过Selector来监听多个Channel的状态,当Channel中有数据可读或可写时,Selector会通知程序进行读写操作。NIO适用于连接数多且连接时间较短的场景。

    AIO是异步非阻塞IO,与NIO不同的是,AIO不需要用户线程等待IO操作完成,而是由操作系统来完成IO操作,操作系统完成IO操作后会通知用户线程处理。AIO适用于连接数较多且连接时间较长的场景,如高性能网络服务器等。

    你说一下NIO是如何实现同步非阻塞的?主线程是只有一个嘛?

    <
  • 相关阅读:
    机器人种类知多少
    Java之线程的详细解析二
    Rancher-Kubewarden-保姆级教学-含Demo测试
    第八章 Linux实际操作——定时任务调度
    RDD的创建 -Java
    【Java】已解决:Java.lang.OutOfMemoryError: GC overhead limit exceeded
    QT软件开发-基于FFMPEG设计录屏与rtsp、rtmp推流软件(支持桌面与摄像头)(四)
    python学习12--爬虫
    鸿蒙OS应用开发之显示图片组件6
    ARTS 第一期
  • 原文地址:https://blog.csdn.net/huanxiajioabu/article/details/132601596