이해를 도울 수 있는 코드이다.
단 이 예제가 잘못 사용되는 예로 나온다는 거.ㅡ.ㅡ;;;
public class MapLeaker {
public ExecutorService exec = Executors.newFixedThreadPool(5);
public MaptaskStatus
= 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;
}
}
원문링크
댓글 없음:
댓글 쓰기