java的平台线程(Platform threads)和虚拟线程(Virtual threads)

发布时间:2023年12月21日

https://docs.oracle.com/en/java/javase/20/docs/api/java.base/java/lang/Thread.html

Java的java.lang.Thread支持创建平台线程(Platform threads)和虚拟线程(Virtual threads)。

平台线程(Platform threads)

  • 平台线程通常和内核线程是1:1的映射关系,被操作系统调度。
  • 平台线程通常需要大的堆栈和其它被操作系统维护的资源。
  • 平台线程可以执行所有类型的任务,但资源有限。
  • 平台线程默认有一个自动产生的名字。
  • 平台线程有守护(daemon )或者非守护(non-daemon)线程。
  • 当Java虚拟机启动时,通常有一个非守护线程(通常称为应用的主线程)。
  • 当所有非守护线程都停止的时候,开始关闭过程(shutdown sequence)。没有启动的非守护线程不会阻止关闭过程启动。
  • 平台线程有一个线程优先级。
  • 平台线程是线程组的成员。

虚拟线程(Virtual threads)

  • 虚拟线程典型的是用户模式的线程,被Java运行时调度,而不是被操作系统调度。
  • 虚拟线程通常需要更少的资源。一个Java虚拟机可以支持上百万的虚拟线程。
  • 虚拟线程适用的场景是大多数情况下被阻塞,通常等待I/O的完成。虚拟线程不适用长时间占用CPU的密集操作。
  • 虚拟线程一般用几个平台线程作为承载线程。
  • 在虚拟线程中执行的代码对底层的承载线程不感知。
  • 虚拟线程默认没有线程名字。
  • 虚拟线程是守护线程,因此不会阻止关闭过程的开始。
  • 虚拟线程有一个固定的线程优先级,且不能被改变。
文章来源:https://blog.csdn.net/panghuangang/article/details/135133892
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。