걍 5초가 걸리는 작업들 10개를 ThreadPool 5개에 넣고, 10개의 작업이 끝날 때까지 기다리는 코드
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class TestThread {
private static ExecutorService indexLoadService = Executors
.newFixedThreadPool(5);
public static void main(String[] args) {
for (int i = 1; i < 10; i++) {
indexLoadService.execute(new TTest(i));
}
indexLoadService.shutdown();
try {
// 2초에 한번씩 check한다.
// awaitTermination의 경우 작업이 종료되었으면 true를 그렇지 않고 timeout이 지났으면 false를 리턴한다.
while(!indexLoadService.awaitTermination(2000, TimeUnit.MILLISECONDS)){
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Done");
}
static class TTest implements Runnable {
private int num;
TTest(int num) {
this.num = num;
}
public void run() {
System.out.print(".");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("finish " + num);
}
}
}
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class TestThread {
private static ExecutorService indexLoadService = Executors
.newFixedThreadPool(5);
public static void main(String[] args) {
for (int i = 1; i < 10; i++) {
indexLoadService.execute(new TTest(i));
}
indexLoadService.shutdown();
try {
// 2초에 한번씩 check한다.
// awaitTermination의 경우 작업이 종료되었으면 true를 그렇지 않고 timeout이 지났으면 false를 리턴한다.
while(!indexLoadService.awaitTermination(2000, TimeUnit.MILLISECONDS)){
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Done");
}
static class TTest implements Runnable {
private int num;
TTest(int num) {
this.num = num;
}
public void run() {
System.out.print(".");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("finish " + num);
}
}
}
'programming > Java' 카테고리의 다른 글
Hibernate Quick Reference (0) | 2006.07.27 |
---|---|
Java Puzzlers : 9. Tweedledum (0) | 2006.07.19 |
Javolution (0) | 2006.07.14 |