了解java中的线程

时间:2013-04-06 10:59:18

标签: java multithreading

我对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 个答案:

答案 0 :(得分:3)

是的,两者同时执行。

  

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

在开始编码之前,我强烈推荐this docs。好运

答案 1 :(得分:2)

那是对的。尝试在ping()方法中打印thread id以查看不同的线程正在运行(您也可以命名您的线程,然后我将其作为一种练习,这样我就能理解哪个线程正在做什么)

答案 2 :(得分:2)

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

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

答案 3 :(得分:0)

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