4

我对 JAVA 中的线程概念很陌生,虽然我尝试了一些代码并且它们正在工作,但我真的不完全理解后台发生的事情。例如我写了这段代码:

public class myThreadTest implements Runnable {
  private static void ping(String text, int count) 
                      throws InterruptedException {
    for (int i = 0; i<count; i++) {
      System.out.println("ping "+text+i+"...");
      Thread.sleep(1000);
    }
  }
  public void run() {
    try {
      ping("run ",10);
    } catch (InterruptedException e) {
    }
  }  
  public static void main(String[] args) {
    (new Thread(new myThreadTest())).start();
    try {
      ping("main ", 5);
    } catch (InterruptedException e) {
    }
 }
}

这里是否有 2 个线程正在执行,一个从 main 运行,另一个从方法运行运行?Bcoz 我得到的输出是 main,run,main,run,run,main... 类似的东西。

4

4 回答 4

3

是的,两者同时执行。

线程是程序中的执行线程。Java 虚拟机允许应用程序同时运行多个执行线程。

在开始编码之前,我强烈推荐这个文档。祝你好运

于 2013-04-06T11:02:51.697 回答
2

java中的线程主要与并发有关,这是同时发生多件事的概念。线程是程序中独立的执行路径。

从您的程序中,我可以看到您的代码在启动时启动了两个线程,运行第一个命令 for 循环休眠 1 秒,然后来回运行 run 方法,直到 for 循环耗尽,因此运行继续到 9

于 2013-04-06T11:25:28.610 回答
2

这是正确的。尝试在您的方法中打印线程 idping()以查看不同的线程正在运行(您也可以命名您的线程,我将其作为一种做法,以便了解哪个线程在做什么)

于 2013-04-06T11:00:46.757 回答
0

有两个线程。由于主块中的调用,其中一个线程被创建并开始run异步执行其方法。start另一个线程正在执行该main方法本身。

于 2013-05-15T13:46:48.510 回答