DB에서 240 크기의 ArrayList 형식으로 일부 값을 검색하고 각 8 개의 값 목록에서 하위 목록을 만듭니다. 스레드로 매개 변수로 전달되는이 하위 목록에서 일부 처리를 수행하고 싶습니다. 이 하위 목록이 만들어지고 스레드로 전달되는 for 루프에서 스레드 개체를 만듭니다. 하지만 하나의 스레드가 작업을 마칠 때까지 기다려야하는 문제에 직면하고 있습니다. 매개 변수가 스레드에서 전역이고 동시성 오류가 발생하기 때문입니다. 어떻게 전역 변수로 만들 수 없으며 하나의 스레드가 끝나기를 기다리지 않고 하위 목록에서 처리를 수행 할 수 있습니다. 병렬 요청을 보내고이 하위 목록을 처리하려고합니다.자바에서 매개 변수를 전달하여 멀티 스레딩
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();
}
}
}
스레드 클래스 : 내가 쓰고 있어요 몇 가지 코드를 참조하십시오
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();
}
}
올바른 코드 형식으로 게시물을 수정하십시오. –
왜 하위 목록이 전역인지 여부를 신경 써야합니까? 확실히 그렇지 않다면 더 좋을 것입니다. – Dunes