【发布时间】:2016-04-14 14:31:50
【问题描述】:
在调度线程执行时,是否有任何关于 JVM 公平性的假设?
对于下面的sn-p,是否可以只执行“代码A”而忽略B?
public static void main(String args[]) {
new Thread() {
public void run() {
for (;;) { /* code A */ }
}
}.start();
new Thread() {
public void run() {
for (;;) { /* code B */ }
}
}.start();
}
这个问题更多是理论上的问题 - 让我们假设两个线程都没有被阻塞或鼓励调度程序切换上下文。
【问题讨论】:
-
您的操作系统很可能支持抢先式多任务,在这种情况下,它将上下文切换这些线程。如果您有多个空闲 CPU,它们大部分时间都会运行。
-
好点重新 CPU 编号。只考虑一种 CPU 方案。
-
当今大多数计算机都有很多 CPU,甚至包括手机和树莓派。 ;)
标签: java multithreading jvm