Java 1.6에서 ProcessBuilder를 사용하여 외부 프로세스에서 stdout을 동시에 소비하는 스레드로부터 안전한 방법이 있습니까?외부 프로세스에서 stdout을 동시에 사용합니다.
배경 : 대용량 파일을 stdout에 압축 해제하고 파일이 압축 해제 될 때 각 행을 처리하려면 pbzip2를 호출해야합니다 (pbzip2는 다른 구현과 달리 여러 CPU를 사용함). 그래서
그러나while((line = reader.readLine()) != null)
{
// do stuff
}
, 압축 풀기가 느린 : 다음과 같이;
는논리적 접근 방법은 (? 그냥 이름을 사랑하지 않는 즉, 표준 출력)에의 InputStream을 통해 루프 자식 스레드를 생성하는 것입니다 필자가 정말로 필요로하는 것은 reader.readLine 메소드가 조용히 다음 라인을 종료 할 때까지 기다리는 것이다.
이렇게하는 좋은 방법이 있습니까?
reader.readLine()은 원하는대로 정확하게 수행합니다. 구현이 너무 일찍 종료됩니까? – akarnokd
아니요, 기다렸는지 여부를 지정하지 않은 설명서에서 스레드가 안전한지 궁금합니다. 예를 들어, 타이밍이 방금 발생했다면 readLine은 스트림을 생각할 것인지 닫혀있다. – Rob