进程和线程

进程:

是进程实体(程序及其数据、进程控制块PCB)的运行过程,是系统进行资源分配和调度的一个独立单位。

线程:

轻量级进程,多个线程可共享进程资源,单个线程可独立调度,是操作系统可调度的最小单位。

线程基本概念

如何调度

java使用是抢占式调度,由系统来控制线程切换以及执行时间。(可通过设置线程优先级,使线程获得更多的执行时间,但实际上还是系统来控制的,优先级只相当于建议系统这样做)。PS java优先级(从低到高1-10)

线程的状态

NEW RUNNABLE WAITTING TIMED_WAITING BLOCKED TERMINATED

  • 相互转换

  • WAITTING 和 TIMED_WAITING 区别
    • WATTING

      无限期等待 该状态下线程不会被CPU分配执行时间,等待被其他线程显式唤醒

      Object.wait() Thread.join() LockSupport.park();

    • TIMED_WAITTING

      该状态下线程也不会被CPU分配执行时间,但无需等待其他线程显式唤醒,在指定时间内自动被系统唤醒,也就是说系统对线程还持有监测。

      Thread.sleep() 带有timeout的Object.wait()/Thread.join()

  • WAITTING 和 BLOCKED的区别

    BLOCKED 主要由synchronized关键字实现,这种状态下的线程再等待其他线程释放锁

参考文献:

  1. 计算机操作系统(第四版) 汤小丹 梁红兵
  2. 深入理解java虚拟机 jvm高级特性与最佳实践(第二版) 周志明
  3. 实战java高并发程序设计 葛一鸣 郭超

版权声明:本文为chenzd原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/chenzd/p/10265351.html