### 17.3 P3 — 배수 목록의 순회가 동기화 밖에서 일어난다

```java
draining.computeIfAbsent(name, key -> java.util.Collections.synchronizedList(new ArrayList<>())).add(previous);
…
public List<GrpcChannelRuntime> draining(GrpcChannelProfileName profileName) {
  return List.copyOf(draining.getOrDefault(profileName, List.of()));
}
public int retireQuiescent(GrpcChannelProfileName profileName) {
  List<GrpcChannelRuntime> runtimes = draining.get(profileName);
  …
  List<GrpcChannelRuntime> quiescent = runtimes.stream().filter(GrpcChannelRuntime::quiescent).toList();
  runtimes.removeAll(quiescent);
```

