2014-02-15 48 views

回答

0

taskmanager通過稀疏主線程中的多個用戶線程來管理任務。主線程始終默認創建。用戶線程1-3按順序運行,即線程2僅在線程1完成後啓動,以此類推。用戶線程4-6啓動並且同時執行。

enter image description here

public class TaskManager { 
    public static void main(String[] args) throws InterruptedException { 
     RunnableTask task = new RunnableTask(); 

     //threads 1-3 are run sequentially 
    Thread thread1 = new Thread(task, "Thread-1"); 
    Thread thread2 = new Thread(task, "Thread-2"); 
    Thread thread3 = new Thread(task, "Thread-3"); 

    thread1.start(); //invokes run() on RunnableTask 
    thread1.join(); // main thread blocks (for 10 seconds) 
    thread2.start(); //invokes run() on RunnableTask 
    thread2.join(); // main thread blocks (for 10 seconds) 
    thread3.start(); //invokes run() on RunnableTask 
    thread3.join(); // main thread blocks (for 10 seconds) 

    Thread thread4 = new Thread(task, "Thread-4"); 
    Thread thread5 = new Thread(task, "Thread-5"); 
    Thread thread6 = new Thread(task, "Thread-6"); 

     thread4.start(); //invokes run() on RunnableTask 
     thread5.start(); //invokes run() on RunnableTask 
     thread6.start(); //invokes run() on RunnableTask 
    } 
} 

通知的輸出的時間。線1-3之間有10秒的差異。但是線程4-6幾乎在同一時間開始。

Thread-1 at Fri Mar 02 16:59:22 EST 2012 
Thread-2 at Fri Mar 02 16:59:32 EST 2012 
Thread-3 at Fri Mar 02 16:59:42 EST 2012 
Thread-4 at Fri Mar 02 16:59:47 EST 2012 
Thread-6 at Fri Mar 02 16:59:47 EST 2012 
Thread-5 at Fri Mar 02 16:59:47 EST 2012 
+0

這是一個很不錯的答案,但我怕op是完全地問另一個問題:他是問*進程之間的通信*您展示在串行和並行線程之間的區別單一過程。 – kajacx