【发布时间】:2014-12-20 17:15:06
【问题描述】:
我在 Java 中运行以下程序(通过 Eclipse IDE):
package threaddemo;
class Runner extends Thread{
@Override
public void run() {
while(true)
System.out.println("Running in a thread ....");
}
}
public class ThreadClass {
public static void main(String[] args) {
Runner thread1 = new Runner();
thread1.start();
Runner thread2 = new Runner();
thread2.start();
}
}
当程序运行时,我试图查看 JVisualVM 中的线程活动。我希望同时看到两个线程都是绿色的(即同时运行),但是我看到在执行期间的任何时间点,有一段时间任何一个线程处于 Monitor 状态,而另一个正在执行。过了一会儿,它们切换(前者正在执行,而后者处于Monitor状态)。这怎么可能?
【问题讨论】:
标签: java multithreading performance visualvm jvisualvm