Java线程的优先级设置

通过setPriortiy设置优先级,有效数字从1-10,否则无效,通过下面的源码分析,若是当前线程的优先级设置的级别大于所在的Group则当前设置的优先级失效,使用所在group的最大优先级。默认为5

public final void setPriority(int newPriority) {
        ThreadGroup g;
        checkAccess();
        // 验证有效优先级别为1-10
        if (newPriority > MAX_PRIORITY || newPriority < MIN_PRIORITY) {
            throw new IllegalArgumentException();
        }
        // 若当前的group不为空则判断当前设置的优先级是否大于所在优先级,若大于则使用group的最大优先级。
        if((g = getThreadGroup()) != null) {
            if (newPriority > g.getMaxPriority()) {
                newPriority = g.getMaxPriority();
            }
            setPriority0(priority = newPriority);
        }
    }

不建议在实际的开发过程中所有线程优先级来做业务操作,因为此优先级还是要依赖于CPU的调度,并不是绝对的,只能为某一个线程增加一定的权重。

原文地址:https://www.cnblogs.com/Mr-GG/p/java-xian-cheng-de-you-xian-ji-she-zhi.html