Java线程优先级
线程优先级是最小是1,最大是10,默认是父线程的优先级,启动main方法线程的优先级一般是5。
线程不一定按照优先级运行
修改线程的优先级不一定有用,看系统和jvm的具体实现,有些jvm确实按照优先级来调度线程;
有些jvm将java的优先级映射到系统较小的线程优先级上,不同优先级的java线程实际上在系统中是同样的优先级;
或者系统不完全按照线程的优先级进行调度,可能有其他调度机制,保障低优先级线程也有机会运行。
优先级不能代替锁
线程优先级只能代表线程间的相对重要性或者说紧急程度,特别是出现大量线程争夺运行机会时,才可能考虑优先级,不能代替锁。
通常优先级约定:
10:关键问题;
7-9:交互,事件驱动;
4-6:IO;
2-3:后台计算;
1:在没有其他程序运行的情况下运行。
网友评论