4.等待状态(WAITING):处于这种状态的线程不会被分配 CPU 执行时间 , 它们要等待被显式地唤醒 , 否则会处于无限期等待的状态 。比如运行状态的线程执行wait方法 , 会把线程放在等待队列中 , 直到被唤醒或者因异常自动退出
5.超时等待状态(TIMED_WAITING):处于这种状态的线程不会被分配 CPU 执行时间 , 不过无须无限期等待被其他线程显式地唤醒 , 在到达一定时间后它们会自动唤醒 。比如运行状态的线程执行Thread.sleep(1000)方法 , 当到达目标时间后 , 会自动唤醒或者因异常自动退出
6.终止状态(TERMINATED):表示该线程已经执行完毕 , 处于终止状态的线程不具备继续运行的能力
五、小结本文主要围绕进程和线程的一些基础知识 , 进行简单的入门知识总结 。
线程的特征和进程差不多 , 进程有的它基本都有 。
相对于进程而言 , 线程更加的轻量化 , 主要承担任务的执行工作 , 优点如下:
- 一个进程中可以同时拥有多个线程 , 这些线程共享该进程的资源 。我们知道进程间的通信必须请求操作系统服务(因为 CPU 要切换到内核态) , 开销很大 。而同进程下的线程间通信 , 无需操作系统干预 , 开销更小
- 线程间可以并发执行任务 , 线程间的并发比进程的开销更小 , 系统并发性更好
- 在多 CPU 环境下 , 各个线程也可以分派到不同的 CPU 上并行执行
- 通过多线程编程 , 可以显著的提升程序任务的执行效率
- 当程序编程不合理 , 多个线程发生较长时间的等待或资源竞争时 , 可能会出现死锁
- 等候使用共享资源时可能会造成程序的运行速度变慢 。这些共享资源主要是独占性的资源 , 如打印机、IO 设备等
- 采用多进程方式 , 可以保证多个任务同时运行;
- 采用多线程方式 , 可以将单个任务分成不同的部分进行执行;
- 提供协调机制 , 防止进程之间和线程之间产生冲突 , 同时允许进程之间和线程之间共享资源 , 以充分的利用系统资源
【关于线程的知识,你知道多少?】
推荐阅读
- 四层负载均衡的 NAT 模型与 DR 模型推导
- 详解API接口如何安全的传输数据
- Sonic: Go语言的超级JSON库,解析与编码速度狂飙
- EasyNetQ库:让你的分布式系统消息开发快人一步!
- C# 中的 ref 已经被放开,或许你已经不认识了
- Oracle数据库分区技术:优化大型数据集的存储效率!
- Docker容器中的Postgresql备份脚本异常解决办法
- 目前有哪些比较成功的人工智能应用?
- 为什么色准越高的显示设备就越贵
- AI要被卡脖子了?训练大模型的数据或在2026年耗尽
