Java 之 当一个线程在执行死循环时另一个线程会得不到CPU吗?

若一个进程中有两个线程,其中之一是一个while(true)死循环,另一个线程会不会得不到CPU而不执行呢?

现在的操作系统都是抢占式的,换一句话说,就算你只有1个cpu,当一个线程执行超过一段时间,操作系统都会强迫它终止,并且调度别的线程执行。
当然别的线程能多大限度上得到调度,这个取决于线程的优先级,如果优先级很低,那么会很久很久才能得到调度。
当然,如果你系统本身有多个cpu的话,那么(长时间)得不到cpu的机会就更少了。

这个表述有不准确,这个死循环的线程占据了当前的CPU,但是另一个线程也是可以得到CPU的,现在都是多CPU的主机了。
只是不会得到那个死循环所占用的 CPU 而已。还是可能被分配到其他CPU而被执行的。

首先,假设只有一个 cpu,死循环的线程依旧是一个正常执行的线程,它依然与其他线程公平竞争系统资源,那么当这个死循环线程的时间片用完的时候,它就必须得把 cpu 让出来,不管他是不是死循环,这并不会导致他霸占 cpu