여러 스레드로 작업할 때 진행하기 전에 실행을 조정하고 작업이 완료되었는지 확인하는 것이 필수적입니다. 이 시나리오에는 웹에서 데이터를 동시에 가져오고 버퍼 클래스를 채우는 5개의 스레드가 있습니다. 목표는 버퍼에 있는 데이터의 유효성을 검사하고 모든 스레드가 작업을 완료한 경우에만 데이터베이스에 저장하는 것입니다.
Java에서 이를 달성하는 효과적인 방법 중 하나는 다음과 같습니다. 스레드 풀 관리를 위한 편리한 API를 제공하는 ExecutorService를 활용합니다. 이 접근 방식을 구현하는 방법은 다음과 같습니다.
ExecutorService es = Executors.newCachedThreadPool(); // Submit the tasks to the executor service for (int i = 0; i < 5; i++) { es.execute(new Runnable() { // Implement your task here }); } // Shut down the executor service after submitting the tasks es.shutdown(); // Wait for all tasks to finish or for a specified timeout boolean finished = es.awaitTermination(1, TimeUnit.MINUTES); // If all tasks have finished, proceed with validation and database storage if (finished) { validateBufferData(); storeDataInDatabase(); }
awaitTermination 메서드를 활용하면 실행기 서비스의 모든 작업이 완료되거나 지정된 시간 초과에 도달할 때까지 기본 스레드를 차단할 수 있습니다. 이렇게 하면 모든 스레드가 작업을 완료한 후에만 데이터 검증 및 데이터베이스 저장이 수행됩니다.
위 내용은 계속하기 전에 모든 Java 스레드가 완료되었는지 확인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!