我正在從ArrayList的240大小的表單中檢索一些值,並從每個值的列表中創建一個子列表。我想在這個子列表上做一些處理,它將作爲參數傳遞給線程。 我正在創建線程對象的for循環中創建該子列表並將其傳遞給線程。但是我面臨的問題是我必須等到一個線程完成其工作,因爲參數在線程中是全局的並且會給出併發性錯誤。 如何不讓它成爲一個全局變量並且在我的子列表上進行處理而不等待1個線程完成,我想發送並行請求並處理這個子列表。 請看到一些代碼,我正在寫:通過在java中傳遞參數進行多線程處理
Class a {
for(int j=0; j<240; j++) {
subOrders.add(orders.get(j));
if(subOrders.size()==8)
{
TestThread test = new TestThread(subOrders);
try {
test.t.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
subOrders.clear();
}
}
}
Thread類:
public class TestThread implements Runnable {
ArrayList<Integer> b ;
public Thread t;
public TestThread(ArrayList<Integer> a) {
b=a;
t= new Thread(this);
t.start();
}
@Override
public void run() {
ArrayList<Integer> c = b;
System.out.println(c);
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
請使用正確的代碼格式編輯您的文章。 – 2012-03-10 23:16:28
爲什麼你在乎子列表是否全局?如果不是,那肯定會更好。 – Dunes 2012-03-10 23:19:01