2017-02-07 1 views
1

Java 1.8에서 파일을 수정하거나 변경할 때까지 스레드를 잠자기 할 수있는 방법을 찾고 있습니다. 기본적으로이 스레드는 파일 내용을 읽어야하고 변경 사항에주의해야하지만 파일을 읽거나 대기, 다시 읽거나 기다리는 등의 이유로 코어를 흡수 할 수 없습니다.파일 수정까지 스레드 대기

이상적으로 스레드는 동시 차단 대기열이 대기열에서 제거 될 항목이있을 때까지 스레드를 절전 모드로 전환하는 것과 같은 방식입니다.

아이디어가 있으십니까?

답변

6

당신은 사용할 수 NIO WatchService :

변경 및 이벤트에 대한 등록 된 객체를 시계 시계 서비스를 제공합니다. 예를 들어, 파일 관리자는 감시 서비스를 사용하여 디렉토리가 변경 사항을 모니터링하여 파일 작성 또는 삭제시 파일 목록 표시를 업데이트 할 수 있습니다. 사용할 수

// 1 create the watchService 
WatchService watchService = FileSystems.getDefault().newWatchService(); 

// 2 get a reference to the directory to be watched for changes 
String watchedDir = "/mydir"; 
Path dir = Paths.get(watchedDir); 

// 3 register on the events you need to watch 
WatchKey watchKey = dir.register(watchService, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY); 

... 

// 4 wait for changes, generally inside a loop 
watchKey = watchService.take(); 

방법에 걸릴 시계 키를 반환, 그렇지 않으면 대기 :

는 당신이 필요를 사용합니다.