누군가가 나를 도와 줄 수 있는지 궁금해했다.자바 쓰레드 사용하기, 반복적으로
나는 (자바를 사용하여) 달성하고 싶다 무엇 : 첫 번째 반복에서
, 나는 "doStuff"10 배 (동시에)에합니다.
두 번째 반복에서 첫 번째 반복이 완료된 후 20 번 (동시 방식으로) "doStuff"하고 싶습니다.
내 코드의 문제는 한 번에 물건을 30 번하고있어 것입니다
등 ... (I이 100 배를 할 계획 때문에 루프 수 있도록하고 싶습니다). 어떤 도움이라도 대단히 감사하겠습니다.
추신 : 간략화를 위해 코드 부분이 제거되었으므로 실수가있을 경우 알려주십시오.
public static void doStuff(){
[Code]
}
public static void threadThis (int y){
for (int i = 0; i<y; i++) {
Thread t1 = new Thread(){
public void run() {
doStuff();
}
};
t1.start();
}
}
public static void main(String[] agrs) throws InterruptedException {
for (int p = 0; p<21; p = p + 10){
threadThis(p);
}
}
당신은 Fi를 한 후 실행의 20 "doStuff"의 두 번째 반복을 원하는 경우 첫째, 스레드의 두 번째 반복에 대한 보류를 구현해야합니다. 지금 당장은 아무것도하지 않기 때문에 호출 될 때 30 개의 스레드가 모두 실행되고 실행됩니다. – JWiley
[fork-join] (http://docs.oracle.com/javase/tutorial/essential/concurrency/forkjoin.html) 자습서를 살펴보십시오. – Ralf
Thread 클래스를 확장하는 클래스를 만들고 "doStuff()"함수가 끝나자 마자 boolean finished = true를 설정하십시오. 현재 실행중인 모든 스레드에 대한 루프를 체크 인하 고 완료 속성이 모두 참이면 다른 작업을 수행하는 10 개의 스레드를 추가로 만들 수 있습니다. – 1337