Java线程基础知识:优先级、sleep()、wait()、yield() 方法解析
在Java中,'高优先级的可运行的线程会抢占低优先级线程的资源' 是正确的。其他三个说法都是错误的。
- 调用Thread的sleep()方法或wait()方法都会释放锁,而不是只有wait()方法不释放锁。
- 一个线程调用yield方法只是暗示调度器可以让其他具有相同或更高优先级的线程运行,但并不保证一定会让其他线程运行。
- 线程调用yield方法不能使比自己低优先级的线程运行,只能暗示调度器可以让其他具有相同或更高优先级的线程运行。
总结:
- 高优先级线程会优先获得CPU资源,但并非绝对保证。
- sleep() 和 wait() 方法都会释放锁,但它们在功能上有区别:sleep() 方法会暂停当前线程指定时间后继续执行,而 wait() 方法会使线程进入等待状态,需要其他线程调用 notify() 或 notifyAll() 方法唤醒才能继续执行。
- yield() 方法只是暗示调度器可以让其他线程运行,并不保证其他线程一定会运行。
原文地址: https://www.cveoy.top/t/topic/ngA5 著作权归作者所有。请勿转载和采集!