当有多个线程同时运行的时候,由线程调度器来决定哪些线程运行、哪些等待以及线程切换的时间点,由于各个操作系统的线程调度器实现大相径庭,因此,依赖JDK自带的线程优先级来设置线程优先级策略的方法是错误和非平台可移植的。所以,在任何情况下,程序都不能依赖JDK自带的线程优先级来保证执行顺序、比例和策略。
Netty中默认的线程工厂实现类,开放了包含设置线程优先级字段的构造函数。这是个错误的决定,对于使用者来说,既然JDK类库提供了优先级字段,就会本能地认为它被正确地执行,但实际上JDK的线程优先级是无法跨平台正确运行的。图21-23提供了一个线程优先级的反面示例。
图21-23 线程优先级的反面示例