2016-08-11 3 views
-1

프로그램과 같은 스카이프를 만들려고합니다. 각 호출에는 수락 스레드와 여러 사용자 스레드가 있습니다. 실행중인 두 개의 호출이 있고 첫 번째 호출에서 사용자가 종료되면 첫 번째 스레드가 중지하도록 알리고 싶지만 두 번째 호출을 계속 실행하고 싶습니다. 나는 "isInterrupted()가"방법은 경우에도 각 내가 호출 할 때 "이 ArrayList를"하지만 "인터럽트를()"방법이 작동하지 않는로 스레드를 수용 해 봤어 참된. 바로 모든 실행 작업을 중지 (여전히 중단 사용합니다) ExecutorServiceshutdownNow() 방법은 시도을 의지합니다여러 인스턴스가있을 때 다른 스레드에서 특정 스레드를 닫는 방법

ExecutorService executorService = Executors.newFixedThreadPool(10); 
executorService.execute(new Runnable() { 
    public void run() { 
     System.out.println("Asynchronous task"); 
    } 
}); 
executorService.shutdownNow(); 

-

+1

당신은 몇 가지 코드를 표시해야합니다. 다음을보십시오 : https://stackoverflow.com/help/mcve –

+0

'스레드를 닫을 필요는 없습니다.' 소켓 *을 닫아야합니다. 그러면 스레드가 종료됩니다. 이것은 단지 데이터 구조 문제 일 뿐이며 여기서 대답 할 질문은 없습니다. – EJP

답변

0

귀하의 요구 사항은 여전히 ​​제안, 당신은 ExecutorService 갈 수 분명하지 않다 제출되었지만 처리되지 않은 모든 작업은 건너 뜁니다.

당신은 너무 Interface Future<V> 들여다 할 수 있습니다 - https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Future.html

+0

그는 '모든 실행 작업을 즉시 중단하고 싶지 않습니다.' – EJP

+0

나도 미래의 인터페이스를위한 링크를 metioned. 그는이 같은 미래 뭔가 사용할 수 있습니다 - 미래 미래를 = executorService.submit (새의 Runnable() { 공공 무효 실행() { 에서 System.out.println ("비동기 작업"); } }); future.cancel (true); –

+0

다른 스레드에서 실행되는 동일한 종류의 스레드가 두 개 이상있는 경우 소켓을 중지하는 방법이 필요합니다. –

관련 문제