### 17.3 P3 — 배수 목록의 순회가 동기화 밖에서 일어난다 ```java draining.computeIfAbsent(name, key -> java.util.Collections.synchronizedList(new ArrayList<>())).add(previous); … public List draining(GrpcChannelProfileName profileName) { return List.copyOf(draining.getOrDefault(profileName, List.of())); } public int retireQuiescent(GrpcChannelProfileName profileName) { List runtimes = draining.get(profileName); … List quiescent = runtimes.stream().filter(GrpcChannelRuntime::quiescent).toList(); runtimes.removeAll(quiescent); ```