gpt4 book ai didi

java - 关于线程和 JVisualVM

转载 作者:行者123 更新时间:2023-12-01 07:58:06 27 4
gpt4 key购买 nike

我正在 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 中的线程 Activity 。我原本希望看到两个线程同时呈绿色(即同时运行),但是我看到在执行过程中的任何时间点,有一小会儿任何一个线程都处于监视器状态,而另一个线程正在执行。过了一会儿,它们切换了(前者正在执行,后者处于Monitor状态)。怎么会这样?

最佳答案

您的两个线程都在尝试写入 System.out。自 writing to PrintStream is synchronized ,每次一个线程正在写入流而另一个线程正在等待流变得可用时。

如果线程执行某些不依赖于共享资源的 Activity (例如,某些计算),您将能够看到线程同时执行。

关于java - 关于线程和 JVisualVM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27582486/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com