경합 조건을 완화하고 코드에서 스레드 안전성을 보장하려면 Collections.synchronizedList() 메서드를 사용하는 것이 좋습니다. . 이 방법은 동기화된 액세스로 기존 ArrayList를 래핑하여 해당 작업을 손쉽게 보호합니다.
이를 기존 코드에 통합하는 방법은 다음과 같습니다.
<code class="java">public class Race implements RaceListener { private Thread[] racers; // Use Collections.synchronizedList() to make the ArrayList thread-safe private List<RaceCar> finishingOrder = Collections.synchronizedList(new ArrayList<>(numberOfRaceCars)); // ... Remaining code ... }</code>
Collections.synchronizedList()를 활용하면 ArrayList가 ,finishingOrder는 동시 액세스로부터 완전히 보호됩니다. 이는 여러 스레드가 액세스를 위해 경합할 때 요소 추가 또는 제거와 같은 작업이 예측할 수 없는 동작이나 데이터 손상으로 이어지지 않도록 보장합니다.
위 내용은 Collections.synchronizedList()를 사용하여 Java에서 ArrayList를 스레드로부터 안전하게 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!