2014-05-10 12 views
0

我想創建2個線程都有無限循環,應該從彼此切換。問題是,我在第一個線程中永遠陷入困境,沒有發生上下文切換。我的錯誤是什麼? 我正在使用java8和Eclipse Juno。Java程序被困在一個特定的線程

這是 '主' 類:

public class Main { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) 
    { 

     test1 t = new test1(); 
     test2 t2 = new test2(); 
     t.run(); 
     t2.run(); 

     while(true) 
     { 
      System.out.println("text from main"); 
      try { 
       Thread.sleep(100); 
      } catch (InterruptedException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 


    } 

} 

這是 'TEST1' 類:

public class test1 implements Runnable { 

    public void run() 
    { 
     while(true) 
     { 
      System.out.println("text from thread"); 
      try { 
       Thread.sleep(10000); 
      } catch (InterruptedException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 

    } 

} 

這是 'TEST2' 類:

public class test2 implements Runnable { 

    public void run() 
    { 
     while(true) 
     { 
      System.out.println("text from thread2"); 
      try { 
       Thread.sleep(100); 
      } catch (InterruptedException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 

    } 

} 
+0

你沒有開始任何線程。請檢查http://docs.oracle.com/javase/tutorial/essential/concurrency/ – Mat

+0

run()不會啓動一個新的執行線程。創建Thread thread = new Thread(t); thread.start(); – Heisenberg

回答

3

的正確的事情將是

Thread t = new Thread(new test1()); 
Thread t2 = new Thread(new test2()); 
t.start(); 
t2.start(); 

乾杯, 丹尼爾

0

與以前的答案添加:做一個聲明像

線程t =新主題(新TEST1()); t.run();

這裏您只是簡單地調用runnable對象的run方法 - (在線程對象初始化步驟中,即first語句中)。所以, 要開始一個新的線程,你必須使用 t.start();