如果我有以下虚拟代码:
public static void main(String[] args) {
TestRunnable test1 = new TestRunnable();
TestRunnable test2 = new TestRunnable();
Thread thread1 = new Thread(test1);
Thread thread2 = new Thread(test2);
thread1.start();
thread2.start();
}
public static class TestRunnable implements Runnable {
@Override
public void run() {
while(true) {
//bla bla
}
}
}
在我当前的程序中,我有一个类似的结构,即两个线程执行相同的 Run() 方法。但是由于某种原因,只有线程 1 获得了 CPU 时间,即线程 2 永远没有机会运行。这是因为线程 1 在其 while 循环中,线程 2 等待吗?
我不太确定,如果一个线程处于一个while循环中,它是否会“阻塞”其他线程?我会这么认为,但不是 100% 肯定,所以很高兴知道是否有人可以告诉我这里实际发生的事情。
编辑 好的,只是再次尝试制作一个非常简单的示例,现在两个线程都在获取 CPU 时间。但是,在我的原始程序中并非如此。一定是某个地方的一些错误。现在正在调查。感谢大家清理它,至少我得到了那个知识。