2017-05-23 1 views
0

내 응용 프로그램의 스레드를 서로 이야기하고 싶습니다. 내 시나리오는 아래에 언급되어 있습니다. (검색했지만 아무것도 찾지 못했습니다.)스레드 간 통신 Java

예를 들어, 10 개의 스레드가 뭔가를하고 있습니다. 스레드 1은 안전하게 종료 할 수있는 조건을 만났지 만, 다른 스레드가 수행중인 작업을 중지하고 안전하게 종료 할 것을 알리는 것이 필요합니다.

이 작업을 수행하는 한 가지 방법은 변수를 공유하는 것입니다. 각 스레드는 작업을 수행하기 전에이 변수를 검사합니다. 주의해야 할 것은 특정 검사 점에서이 변수를 계속 검사해야한다는 것입니다.

thread1이 다른 사람들에게 자신이하는 일을 멈추고 안전하게 종료 할 수있는 방법이 있다면 더 좋을 것입니다.

이러한 패키지를 사용할 수 있습니까? 아니면 복잡하게하지 않으면 서 이렇게하는 패키지가 있습니까?

+1

을 수 있습니다 할 수 있습니다'호출하여 그 스레드의 실행'thread.interrupt()' – Achilles

+0

가 어떻게 스레드에서 10 스레드 2 중단 할 interrupt' 1? –

답변

2

당신이 할 수있는 일은 거의 없지만 깨끗합니다.

  1. 다른 모든 스레드를 중단하도록 정렬하십시오. 매우 조잡하고 두통을 줄 것입니다
  2. 변수 (또는 대기열)를 정기적으로 확인하십시오. 아마도 더 나은 접근법이지만, 말처럼 좀 지저분합니다.
  3. 작은 함수로 코드를 리팩터링하고 스레드 풀을 사용하여 처리합니다. 처리를 중지 할 수 있다고 판단되면 풀을 종료하십시오. 많은 작업을 할 수 있지만, 가장 탄력적 인 솔루션
+1

나는 이미 수영장이 있고 이것은 내 마음을 넘어 섰다. 나는이 옵션을 탐구해야 할 것 같아. –

+0

@ArnavSengupta - 좋습니다! 작은 프로세스로 리팩터링 한 후에 코드를 실제로 관리하는 것이 훨씬 쉬워지는 것을 알 수 있습니다. – OldCurmudgeon