Java基础
多线程
1,线程状态

2,线程池状态
五大状态:
1)RUNNING:能够接收新任务以及对已添加的任务进行处理,线程池一旦被创建,就处于RUNNING状态,
且线程池中的任务数为0
2)SHUTDOWN:不接收新任务,但能处理已添加好的任务
3)STOP:不接收新任务,不处理已添加的任务,并且会中断正在处理的任务
4)TIDYING:线程池中没有线程运行,会自动变成TIDYING状态然后调用terminated方法,该方法为空,留给自己扩展
5)TERMINATED:线程池彻底终止,就会变成TERMINATED状态,
3,线程池执行流程

4,什么是线程安全的集合,有哪些?
线程安全的集合指的是多线程环境下可以安全地进行读写操作的集合
ConcurrentHashMap、CopyOnWriteArrayList、CopyOnWriteArraySet、ConcurrentLinkedQueue
5,什么是线程间通信,有哪些?
线程间通信指的是多个线程之间进行交互和协作的过程。
Java中有以下几种线程间通信的方式:
1、共享变量、2、wait()和notify()方法、3、使用Condition接口和Lock锁实现更细粒度的等待和唤醒操作。
NIO BIO AIO 有什么区别?
bio,同步阻塞 ftp等低并发使用
nio,同步非阻塞,Tomcat、Netty,高并发短连接
aio,异步非阻塞,视频流媒体服务器、大型文件传输服务,高并发长连接
BIO :核心比喻: “一个服务员服务一桌客人”
NIO:核心比喻: “一个服务员服务所有客人(轮询)主动去问”
AIO:核心比喻: “一个服务员服务所有客人(回调)被动去送”
| 特性 | BIO (同步阻塞) | NIO (同步非阻塞) | AIO (异步非阻塞) |
|---|---|---|---|
| 全称 | Blocking I/O | Non-blocking I/O / New I/O | Asynchronous I/O |
| 核心机制 | 面向流 (Stream) | 面向缓冲区 (Buffer)、通道 (Channel)、选择器 (Selector) | 回调 (Callback) / Future |
| 阻塞性 | 阻塞 (连接、读写都阻塞) | 非阻塞 (通过Selector管理,读写不阻塞线程) | 非阻塞 (应用发起I/O后立即返回) |
| 同步/异步 | 同步 | 同步 (应用需自己处理就绪事件) | 异步 (操作系统完成后通知应用) |
| 线程模型 | 一连接一线程 (Thread-Per-Connection) | 单线程或少量线程处理大量连接 (Reactor) | 回调驱动,有效利用线程池 (Proactor) |
| 编程复杂度 | 低 | 高 | 最高 |
| 性能/伸缩性 | 连接数少时稳定,高并发时差 | 高并发下性能极佳 | 理论性能最佳,但受限于OS支持 |
| 适用场景 | 低并发、连接数固定 | 高并发、短连接 | 高并发、长连接(尤其在Windows下) |
日夜颠倒头发少 ,单纯好骗恋爱脑 ,会背九九乘法表 ,下雨只会往家跑 ,搭讪只会说你好 ---- 2050781802@qq.com