繁体   English   中英

在java中忙等待线程

[英]busy wait threads in java

我有线程的任务,我不能让线程进入忙等待状态。 我如何知道线程是处于阻塞状态还是处于繁忙等待状态? 有没有检查它的命令?

在程序中我有2个矩阵,我需要转换它们。 所以我有一个转换线程,代码如下:

transformThread transformThreadFirst = new transformThread(firstMat, n);
transformThread transformThreadSecond = new transformThread(secondMat, n);

transformThreadFirst.start();
transformThreadSecond.start();

try
{
    transformThreadFirst.join();
    transformThreadSecond.join();
}
catch(InterruptedException e)
{
}

任何线程都将处于忙碌状态等待还是可以的? 或者你有更好的解决方案? 同样在transformThread的运行中我不使用任何yield,只有2 for循环,就是它,只是转换动作..

忙碌的等待是反复做的事情,直到另一个操作结束。 像这样的东西:

// The next line will be called many many times
// before the other thread finishes
while (otherThread.getState() == Thread.State.RUNNABLE) {}

所以,你的代码是不是忙等待,当前线程将被阻塞,直到transformThreadFirst完成,然后阻塞,直到transformThreadSecond完成。

有一个jstack实用程序。 将它用作jstack <pid> ,传递正在运行的jvm的进程ID。 它将显示该应用程序中的每个线程正在执行的操作,以及线程状态(RUNNING,WAITING,BLOCKED)。

它与JDK捆绑在一起并位于其bin /中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM