0 java performance multithreading visualvm jvisualvm
我在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();
}
}
Run Code Online (Sandbox Code Playgroud)
程序运行时,我试图在JVisualVM中看到线程活动.我希望同时看到两个线程都是绿色的(即并发运行),但是我看到在执行期间的任何时间点,一段时间内任何一个线程处于Monitor状态,而另一个线程正在执行.片刻之后,它们会切换(前者正在执行,而后者处于监控状态).怎么会这样?
你的两个线程都试图写入System.out.由于写入PrintStream是同步的,因此每次有一个线程正在写入流而另一个线程正在等待流可用时.
如果线程执行的某些活动不依赖于共享资源(例如,某些计算),您将能够看到线程同时执行.
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |