2015-10-18 58 views
1

我想知道如何將值傳遞給線程。 我想線程1-> 5 我想線程1-> 10java中線程的可變傳輸值

=> 2顯示通過計數1個顯示variable.Please幫我

public class NewClass { 

    public static void main(String[] args) { 
     MyThread myThread = new MyThread(); 

     myThread.setCount(10); 
     Thread thread = new Thread(myThread); 
     thread.start(); 

     myThread.setCount(5); 
     Thread thread2 = new Thread(myThread); 
     thread2.start(); 
    } 

} 

class MyThread implements Runnable { 

    int count = 0; 

    public void setCount(int count) { 
     this.count = count; 
    } 

    @Override 
    public void run() { 
     for (int i = 1; i <= count; i++) { 
      System.out.println(Thread.currentThread().getName() + "\t\t" + i); 
     } 
    } 
} 

我的想法是分裂名單網址和閱讀我有他們的鏈接檢索到的數據的database.It的太難,我請大家幫忙 Jsoup save content into the database

+0

爲每個線程創建一個'MyThread'的新實例,否則您可能會在前一個線程結束運行之前更改'count'。 – Titus

+0

謝謝。可以給我更詳細的介紹2:你可以在前一個線程結束運行之前更改計數嗎? –

+0

如果在調用'myThread.setCount(5)之前第一個線程還沒有完成;'它將不再執行'10'迭代,因爲您已將'count'值從'10'更改爲'5' – Titus

回答

3

您應該創建2個獨立的線程對象,並設置爲每一個所需的數量。

MyThread t = new MyThread(); 
t.setCount(10); 
Thread t1 = new Thread(t); 
t1.start(); 

t = new MyThread(); 
t.setCount(5); 
Thread t2 = new Thread(t); 
t2.start(); 

這樣,每個線程對象將運行自己的MyThread.run方法,與計您配置爲每個MyThread的對象。