Java多线程编程全解析
1. 弃用的线程终止方法
在Java中,曾经有一个 stop() 方法用于终止线程,但现在该方法已被弃用。弃用的原因在于,它会向线程抛出一个 ThreadDeath 对象来杀死线程。而且,调用 stop() 方法会导致线程的 run() 方法突然终止,这可能使线程程序的执行结果处于不一致或不理想的状态。
2. 线程优先级
每个线程都有一个优先级,这有助于调度器决定线程执行的顺序,即确定哪个线程何时运行。默认情况下,新创建的线程具有相同的优先级,Java调度器会按照先来先服务的原则为处理器调度这些线程。需要注意的是,Java采用的是抢占式调度策略,与操作系统类似。当一个高优先级线程准备好执行时,当前正在执行的低优先级线程会被停止。相反,低优先级线程不能抢占正在运行的高优先级线程,它必须等待高优先级线程死亡、因某种原因被阻塞。可能的原因如下:
- 线程一旦退出 run() 方法就会停止。
- 线程使用 sleep() 方法进入睡眠状态。
- 线程使用 wait() 或 join() 方法进入等待状态。
当高优先级线程从阻塞状态恢复后,它会再次抢占之前让出控制权的低优先级线程,迫使低优先级线程从运行状态变为可运行状态。不过,高优先级线程是否总是能抢占低优先级线程,实际上取决于JVM设置的线程优先级如何映射到操作系统。操作系统可能不认为某个高优先级是真正的高优先级,因此这实
超级会员免费看
订阅专栏 解锁全文

6231

被折叠的 条评论
为什么被折叠?



