2013-04-06 38 views
3

我對JAVA中線程的概念很陌生,雖然我嘗試了幾個代碼,但他們都在工作,我真的不完全明白在後臺發生了什麼。例如,我寫了這段代碼:瞭解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我得到的輸出是主要的,運行的,主要的,跑步的,跑步的,主要的......類似的東西。

回答

2

這是正確的。嘗試打印thread idping()方法來看到不同的線程中運行(您也可以命名你的線程和我遵循的做法,所以我可以瞭解哪些線是做什麼的)

3

是,兩者同時執行。

線程是程序中執行的線程。 Java虛擬機允許應用程序同時運行多個執行線程。

我高度推薦this docs開始之前編碼。好運氣

2

線程在Java中主要有併發的事情,這是S的多件事情在同一time.A線程發生的概念是一個程序中獨立的執行路徑。

從你的程序中我可以看到你的代碼在啓動時啓動了兩個線程運行第一個命令for循環睡眠1秒然後運行run方法並來回運行,直到for循環耗盡因此運行繼續到9

0

有兩個線程。其中一個線程被創建並由於主塊中的start調用異步開始執行其run方法。另一個線程本身正在執行main方法。