BIO、NIO、AIO的区别
1.BIO、NIO、AIO的区别
2.Controller是线程安全吗3.为什么多线程下会有线程安全问题4.volatile为什么没有原子性?5.JVM的四种内存屏障6.synchronized关键字原理7.synchronized 锁升级 锁降级8.自旋锁、阻塞锁、可重入锁使用解析9.线程间实现通信的几种方式10.ThreadPoolExecutor线程池参数设置技巧11.关于线程同步(7种同步方式)12.ThreadLocal可能引起的内存泄露13.乐观锁的一种实现方式——CAS14.AtomicInteger源码解析15.ReentrantLock源码解析1--获得非公平锁与公平锁lock()16.ReentrantLock源码解析2--释放锁unlock()17.ReentrantLock源码解析3--优先响应中断的lockInterruptibly18.ReentrantLock总结19.ArrayBlockingQueue源码解析20.LinkedBlockingQueue源码解析21.Timer / TimerTask 源码解析22.Delay延迟队列BIO 同步阻塞IO
服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销。
适用于连接数目小,并发小。
NIO同步非阻塞IO
服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。用户进程也需要时不时的询问IO操作是否就绪,这就需要用户进行不停的去询问。
适用连接数目多且连接比较短(轻操作)的架构,比如聊天服务器。
AIO
异步非阻塞,用户进程只需要发起一个IO操作然后立即返回,等IO操作真正的完成以后,应用程序会得到操作完成的通知,此时用户进程只需要对数据进行处理就好了,不需要进行实际的IO读写操作,因为真正的IO读取或者写入操作已经由内核完成了。
适用于链接数目多且连接比较长(重操作)的架构,比如相册服务器。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了