2008. 11. 7.

자바/스레드풀 및 스레트세이프 맵 만들기

ibm 디벨로퍼웍에 나온 예제인데 스레드풀 사용에 대한
이해를 도울 수 있는 코드이다.

단 이 예제가 잘못 사용되는 예로 나온다는 거.ㅡ.ㅡ;;;


public class MapLeaker {
public ExecutorService exec = Executors.newFixedThreadPool(5);
public Map taskStatus
= Collections.synchronizedMap(new HashMap());
private Random random = new Random();

private enum TaskStatus { NOT_STARTED, STARTED, FINISHED };

private class Task implements Runnable {
private int[] numbers = new int[random.nextInt(200)];

public void run() {
int[] temp = new int[random.nextInt(10000)];
taskStatus.put(this, TaskStatus.STARTED);
doSomeWork();
taskStatus.put(this, TaskStatus.FINISHED);
}
}

public Task newTask() {
Task t = new Task();
taskStatus.put(t, TaskStatus.NOT_STARTED);
exec.execute(t);
return t;
}
}



원문링크

댓글 없음: