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的调度,并不是绝对的,只能为某一个线程增加一定的权重。