java中线程是没有优先级的,Java中线程优先级介绍

Java线程的优先级是一个常被忽视的特性,范围从1到10,影响线程在CPU时间上的分配。虽然优先级高的线程并不总是获得更多执行时间,但在某些场景下,如错误跟踪(如Takipi)等关键任务,设置优先级有助于确保重要线程的执行。然而,实际效果依赖于操作系统的调度策略,且在不同平台上有差异。在Linux上,可通过特定选项启用线程优先级。合理使用线程优先级可以优化应用程序性能,但过度依赖并不推荐。
摘要由CSDN通过智能技术生成

长沙java培训觉得Java中线程有一个有意思的属性就是它的优先级。线程的优先级介于1 (MINPRIORITY)到10

(MAXPRIORITY)之间,主线程默认是5(NORM_PRIORITY)。

每个新线程都默认继承父线程的优先级,因此如果你没有设置过的话,所有线程的优先级都是5。这个是通常被忽视的属性,我们可以通过getPriority()与setPriority()方法来获取及修改它的值。线程的构造函数里是没有这个功能的。

什么地方会用到优先级?长沙java培训告诉你!

当然并不是所有的线程都是平等的,有的线程需要立即引起CPU的重视,而有些线程则只是后台任务而已。优先级就是用来把这些告诉给操作系统的线程调度器的。在Takipi中,这是我们开发的一错误跟踪及排查的工具,负责处理用户异常的线程的优先级是MAX_PRIORITY,而那些只是在上报新的部署情况的线程,它们的优先级就要低一些。你可能会觉得优先级高的线程从JVM的线程调度器那得到的时间会多一些。但其实并都是这样的。

在操作系统层面,每一个新线程都会对应一个本地线程,你所设置的Java线程的优先级会被转化成本地线程的优先级,这个在各个平台上是不一样的。在Linux上,你可以打开“-XX:+UseThreadPriorities”选项来启用这项功能。正如前面所说的,线程优先级只是你所提供的一个建议。和Linux本地的优先级相比,Java线程的优先级并不能覆盖全所有的级别(Linux共有1到99个优先级,线程的优先级在是-20到20之间)。

长沙java培训觉得最大的好处就是你所设定的优先级能在每个线程获得的CPU时间上有所体现,不过完全依赖于线程优先级的做法是不推荐的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值