2010-11-19 1 views
1

여러 스레드가 있고 그 중 하나가 ProcessBuilder를 사용하는 HTPP 서비스를 실행 중입니다.스레드에서 명령이 Java에서 성공적으로 시작되었고 다른 스레드가 시작될 수 있는지 확인하는 방법은 무엇입니까?

HttpThread class 

ProcessBuilder pb = new ProcessBuilder(command); 
Process process pb.start(); 
process.waitFor(); 
int exitValue = process.exitValue(); 

서비스가 시작될 때 다른 스레드가 대기하고 싶습니다. 가장 좋은 방법은 무엇입니까?

수면이 나에게 좋은 해결책이 아닌 것 같습니다. 아마도 HttpThread.isReady (boolean b) 메서드를 사용하는 것이 가능하지만이 명령을 시작한 후 서비스가 계속 실행되고 서비스가 완료 될 때 스레드가 대기 중이므로이 플래그를 설정할 수 없습니다.

다른 방법으로는 하나 이상의 스레드를 만들고 소켓 연결을 만들 수 있지만 좋은 해결책인지 확실하지 않습니다.

당신은 어떻게 생각하십니까?

답변

1

이 메시지는 Producer/Consumer 문제와 유사합니다. 왜 그냥 wait/notify 메커니즘을 사용하지 않으시겠습니까?

학계 example입니다.

+0

아미르, 통고를위한 코드 위의 예제 클래스는 어디에 넣으시겠습니까? – yart

+0

질문이 이해가 가지 않습니다. 내가 게시 한 예에서 알림 호출이있는 위치를 묻는 중입니까? 또는 게시 한 예에서 알림 호출이 어디로 가는지 묻고 있습니까? –

+0

명확하지 않은 경우 사과드립니다. 예제에는 이미 게시 된 예제와 관련된 모든 클래스와 제 질문이 포함되어 있습니다. 내가 요구하는 이유는 그것이 똑같은 문제라는 것을 나는 모른다는 것이다. 명확히하거나 예를 들어주십시오. – yart

0

HTTP 서비스가 JVM 외부에 있기 때문에 옵션이 제한적입니다.

  1. 소켓과 같은 프로세스 간 통신을 사용하여 다른 프로세스를 폴링 할 수 있습니다.
  2. 프로세스가 준비 메시지를 Process.getOutputStream()에 쓸 때까지 차단할 수 있습니다.
관련 문제