当前位置: 首页 > 面试题库 >

说说线程优先级?

蔚学真
2023-03-14
本文向大家介绍说说线程优先级?相关面试题,主要包含被问及说说线程优先级?时的应答技巧和注意事项,需要的朋友参考一下

理论上来说系统会根据优先级来决定首先使哪个线程进入运行状态。当 CPU 比较闲的时候,设置线程优先级几乎不会有任何作用,而且很多操作系统压根不会不会理会你设置的线程优先级,所以不要让业务过度依赖于线程的优先级。

另外,线程优先级具有继承特性比如 A 线程启动 B 线程,则 B 线程的优先级和 A 是一样的。线程优先级还具有随机性 也就是说线程优先级高的不一定每一次都先执行完。

Thread 类中包含的成员变量代表了线程的某些优先级。如Thread.MIN_PRIORITY(常数 1)Thread.NORM_PRIORITY(常数 5),Thread.MAX_PRIORITY(常数 10)。其中每个线程的优先级都在110 之间,在默认情况下优先级都是Thread.NORM_PRIORITY(常数 5)

一般情况下,不会对线程设定优先级别,更不会让某些业务严重地依赖线程的优先级别,比如权重,借助优先级设定某个任务的权重,这种方式是不可取的,一般定义线程的时候使用默认的优先级就好了。

相关方法:

public final void setPriority(int newPriority) //为线程设定优先级
public final int getPriority() //获取线程的优先级

设置线程优先级方法源码:

    public final void setPriority(int newPriority) {
        ThreadGroup g;
        checkAccess();
        //线程游戏优先级不能小于 1 也不能大于 10,否则会抛出异常
        if (newPriority > MAX_PRIORITY || newPriority < MIN_PRIORITY) {
            throw new IllegalArgumentException();
        }
        //如果指定的线程优先级大于该线程所在线程组的最大优先级,那么该线程的优先级将设为线程组的最大优先级
        if((g = getThreadGroup()) != null) {
            if (newPriority > g.getMaxPriority()) {
                newPriority = g.getMaxPriority();
            }
            setPriority0(priority = newPriority);
        }
    }

 类似资料:
  • 本文向大家介绍说说CSS的优先级是如何计算的?相关面试题,主要包含被问及说说CSS的优先级是如何计算的?时的应答技巧和注意事项,需要的朋友参考一下 发现之前已经思考了这个问题,今天刚好回顾复习一下。 原文链接:https://xiangshuo.blog.csdn.net/article/details/52749250 以下是回答: 选择器种类 严格来讲,选择器的种类可以分为三种:标签名选择器、

  • 本文向大家介绍说说你对移动优先布局的理解相关面试题,主要包含被问及说说你对移动优先布局的理解时的应答技巧和注意事项,需要的朋友参考一下 移动优先布局,应该是基于这样一个前提: 如今web页面的移动端用户量(访问量)要远远大于pc端等设备 所以是优先服务于移动端的 那么采用移动优先布局的策略才能最大化页面的使用 移动优先布局即首先针对移动端设备设计页面的布局方式 然后在这个基础上逐渐向平板、电脑等宽

  • 主要内容:1 什么是Java 线程优先级,2 Thread类线程优先级常量,3 Java 线程优先级的例子1 什么是Java 线程优先级 每个线程都有一个优先级。优先级由1到10之间的数字表示。在大多数情况下,线程计划会根据线程的优先级来调度线程(称为抢先式调度)。但是不能保证一定被调用,因为是否被调用取决于JVM选择谁来调度。 2 Thread类线程优先级常量 public static int MIN_PRIORITY public static int NORM_PRIORITY publ

  • 本文向大家介绍说说vue的优缺点相关面试题,主要包含被问及说说vue的优缺点时的应答技巧和注意事项,需要的朋友参考一下 自己的理解不知道对不对,数据的监听在初始化时就绑定监听器了,所以后续数组或对象的改变不一定会及时监听或更新到,得采用this.$set()或其它方法,(this.$set()是万能方法)

  • 问题内容: Java API线程优先级(1-10)如何转换为操作系统级别的优先级,因为大多数操作系统没有与此相匹配的线程优先级别(就数量而言)。 因此请记住,在某些情况下,具有不同优先级的两个或多个线程最终会在OS级别获得相同的优先级。 如果我的理解有需要更正,请澄清。 问题答案: 实际上,某些优先级可以映射到相同的“本地”优先级。这是列表(基于OpenJDK 6中的Hotspot代码): Sol

  • 本文向大家介绍请你说一说进程和线程区别相关面试题,主要包含被问及请你说一说进程和线程区别时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 1)进程是cpu资源分配的最小单位,线程是cpu调度的最小单位。 2)进程有独立的系统资源,而同一进程内的线程共享进程的大部分系统资源,包括堆、代码段、数据段,每个线程只拥有一些在运行中必不可少的私有属性,比如tcb,线程Id,栈、寄存器。 3)一个进程崩