Java多线程优先级
如果您正在运行多个具有相同优先级的线程,为什么不需要在任何线程中调用yield或sleep方法呢?我一定是误解了线程的工作原理。我的假设是,如果两个线程具有相同的优先级,那么在单核系统上,一个线程将在另一个线程启动之前完成。也就是说,除非你调用其中一个控制函数,例如:yield()sleep()join()。。。ect
任何有这方面知识的人,如果您能给我澄清,我将不胜感激
StackOverFlow不允许我对你的回答发表评论:
根据我的书:“JVM总是选择当前可运行的具有最高优先级的线程。只有当没有更高优先级的线程运行时,低优先级的线程才能运行。”
# 1 楼答案
计划是先发制人的。您不需要调用yield或sleep,也不需要等待或调用阻塞操作,操作系统就可以挂起您的线程
即使一个线程的优先级最高,一个线程的优先级最低,也不意味着一个线程会比另一个线程先完成
调用这些方法可能会放弃CPU,但这并不意味着操作系统不会因为没有调用这些方法而怀疑线程。,注:他们不必这么做