DSF*_*DSF 2 java multithreading while-loop
如果我有以下虚拟代码:
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 Code Online (Sandbox Code Playgroud)
在我当前的程序中,我有一个类似的结构,即两个线程执行相同的Run()方法.但由于某种原因,只有线程1被给予CPU时间,即线程2永远不会有机会运行.这是因为当线程1在其while循环中时,线程2会等待吗?
我不确定,如果一个线程在while循环中它是否"阻塞"其他线程?我会这么认为,但不是100%肯定所以如果有人能告诉我这里发生了什么事情会很高兴.
编辑 好的,只是尝试再次制作一个非常简单的例子,现在这两个线程都获得了CPU时间.然而,在我的原始程序中并非如此.某处必须是某些bug.现在调查一下.感谢大家清理它,至少我掌握了这些知识.
JVM无法保证它会暂停一个繁忙的线程来为其他线程提供一些CPU.
在繁忙的循环中调用Thread.yield();或者如果调用不起作用Thread.sleep(100);,让其他线程拥有一些CPU 是一个好习惯.