2012-12-06 115 views
1

我試圖一次運行2個不同的線程,但無法做到這一點。 Thread_1 & Thread_2運行,但它們之間的差異大約爲500ms。我沒有在我的代碼中的任何地方使用wait()sleep()一次運行多線程並讓線程快速運行?

問題:

1 -> How to make run thread simultaneously or in parallel?

2 -> How to make thread run fast ?

此我用Thread.setPriority(Thread.MAX_PRIORITY)第二質詢;但其他時間的差別是一樣的。

更新了示例代碼:與以下示例一樣,但在兩個線程之間運行需要更多時間。

public static void main(String args[]) 
{ 
    MyThread thread1 = new MyThread("thread1: "); 
    MyThread thread2 = new MyThread("thread2: "); 
    thread1.start(); 
    thread2.start(); 
    boolean thread1IsAlive = true; 
    boolean thread2IsAlive = true; 
    do { 
     if (thread1IsAlive && !thread1.isAlive()) { 
      thread1IsAlive = false; 
      System.out.println("Thread 1 is dead."); 
     } 
     if (thread2IsAlive && !thread2.isAlive()) { 
      thread2IsAlive = false; 
      System.out.println("Thread 2 is dead."); 
     } 
    } while(thread1IsAlive || thread2IsAlive); 
} 

我已經完成谷歌,並通過了一些文檔。但無法做到。

任何人都可以給我一些想法或方法來做到這一點。

幫助將不勝感激。

+2

發佈代碼,我們可以幫助您解決問題,而無需查看您正在做什麼。 –

+0

@Arkain我dint張貼我的代碼,但例如看看這段代碼。我正在嘗試完全相同 –

+0

沒有運行創建/監視器線程作爲do..while CPU循環可能會有所幫助... –

回答

2

如何使運行的線程同步或並行?

作爲一個程序員,這只是可能在多處理器機器。在單處理器上,一次只能運行一個線程,並且由JVM(和OS)選擇要運行的線程。

如何使線程跑得快?

您可以嘗試(與您一樣),但總體控制僅適用於JVM(和OS)。

但是,提高線程的優先級並不意味着它會運行得很快。它只會讓線程比其他線程更頻繁地運行。即操作系統可能(或可能不)更多地選擇它。的時間比其他線程。

有關更多詳細信息,請通過此link。請檢查this

+0

你的權利,取決於操作系統,但可以有一種方法來處理它。 –

+0

從技術上講,一次只能在單個核心CPU上運行一個線程,但操作系統將在所有線程之間快速切換,這給出了並行執行的錯覺。 –

+0

是。技術上你的權利。取決於操作系統如何運行線程。我嘗試過使用CyclicBarrier。然後,你也可以得到它 –

1

你不能肯定它也可以做it.You調用thread.start()來啓動它依賴於OS一thread.But時,它會與設定優先started.Even你不能準確做到這一點。

+0

我打電話Thread_1.start()和Thread_1.start()同時運行。但是兩個時間之間的差異我想刪除它。 –

+0

你不能這樣做。因爲OS定義了什麼時候以及如何執行線程。你可以通過設置優先級來將你的想法傳遞給操作系統,但是操作系統定義了它的功能。 – Rasel

+0

ohk ..那麼沒有其他辦法可以做到這一點? –