在Java中,使用一个线程以抢占方式暂停其他的线程是很难的。尽管Java API中提供了Thread的suspend和resume方法,但这些方法又是不建议使用的,因为它们常常会导致死锁。如果一个应用线程在运行到一个同步方法中时被暂停,这常会导致死锁。
标准的JVM支持Java线程根据设定的优先级进行调度,但它不保证这一定生效。使用API设定Java线程的优先级被JVM认为是一种提示,设定是否生效取决具体的JVM实现以及底层操作系统。
因此使用Java提供的API来解决优先级调度的问题是值得认真思考的问题。在构建服务时,处理请求消息时,可能会对不同的请求给予不同的优先级,可考虑将请求消息放置到队列中,不同的优先级的请求放置到不同的队列。