동기부여
java.util.concurrent의 동시성 유틸리티
유틸리티 카테고리:
경쟁 컬렉션
특징:
Map<String, String> map = new ConcurrentHashMap<>(); String result = map.putIfAbsent("key", "value"); if (result == null) { System.out.println("Valor inserido."); } else { System.out.println("Chave já existente com valor: " + result); }
혜택:
동기화기
용도: 스레드 간의 조정.
일반적인 동기화 장치의 예:
실제 예: CountDownLatch를 사용한 동시 타이밍
목표: 여러 스레드의 실행 시간을 동시에 측정합니다.
구현:
public static long time(Executor executor, int concurrency, Runnable action) throws InterruptedException { CountDownLatch ready = new CountDownLatch(concurrency); CountDownLatch start = new CountDownLatch(1); CountDownLatch done = new CountDownLatch(concurrency); for (int i = 0; i < concurrency; i++) { executor.execute(() -> { try { ready.countDown(); // Indica que está pronto start.await(); // Aguarda o sinal de início action.run(); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } finally { done.countDown(); // Indica que terminou } }); } ready.await(); // Aguarda todas as threads ficarem prontas long startTime = System.nanoTime(); start.countDown(); // Dispara o sinal de início done.await(); // Aguarda todas as threads finalizarem return System.nanoTime() - startTime; }
참고:
기다리고 알리는 현재 연습
레거시 코드 유지 관리에만 필요합니다.
주요 규칙:
synchronized (lock) { while (!condition) { lock.wait(); } }
결론
책의 예시
위 내용은 항목 대기 및 알림을 위해 동시성 유틸리티를 선호합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!