关于线程的知识,你知道多少?( 四 )


4.等待状态(WAITING):处于这种状态的线程不会被分配 CPU 执行时间 , 它们要等待被显式地唤醒 , 否则会处于无限期等待的状态 。比如运行状态的线程执行wait方法 , 会把线程放在等待队列中 , 直到被唤醒或者因异常自动退出
5.超时等待状态(TIMED_WAITING):处于这种状态的线程不会被分配 CPU 执行时间 , 不过无须无限期等待被其他线程显式地唤醒 , 在到达一定时间后它们会自动唤醒 。比如运行状态的线程执行Thread.sleep(1000)方法 , 当到达目标时间后 , 会自动唤醒或者因异常自动退出
6.终止状态(TERMINATED):表示该线程已经执行完毕 , 处于终止状态的线程不具备继续运行的能力
五、小结本文主要围绕进程和线程的一些基础知识 , 进行简单的入门知识总结 。
线程的特征和进程差不多 , 进程有的它基本都有 。
相对于进程而言 , 线程更加的轻量化 , 主要承担任务的执行工作 , 优点如下:

  • 一个进程中可以同时拥有多个线程 , 这些线程共享该进程的资源 。我们知道进程间的通信必须请求操作系统服务(因为 CPU 要切换到内核态) , 开销很大 。而同进程下的线程间通信 , 无需操作系统干预 , 开销更小
  • 线程间可以并发执行任务 , 线程间的并发比进程的开销更小 , 系统并发性更好
  • 在多 CPU 环境下 , 各个线程也可以分派到不同的 CPU 上并行执行
  • 通过多线程编程 , 可以显著的提升程序任务的执行效率
不过线程也有缺点:
  • 当程序编程不合理 , 多个线程发生较长时间的等待或资源竞争时 , 可能会出现死锁
  • 等候使用共享资源时可能会造成程序的运行速度变慢 。这些共享资源主要是独占性的资源 , 如打印机、IO 设备等
总的来说 , 进程和线程各有各优势 , 站在操作系统的设计角度而言 , 可以归结为以下几点:
  • 采用多进程方式 , 可以保证多个任务同时运行;
  • 采用多线程方式 , 可以将单个任务分成不同的部分进行执行;
  • 提供协调机制 , 防止进程之间和线程之间产生冲突 , 同时允许进程之间和线程之间共享资源 , 以充分的利用系统资源

【关于线程的知识,你知道多少?】


推荐阅读