2016-06-21 1 views
-1

을 닫아 실행 파일을 닫기.나는 현재 실행중인 스레드를 종료하는 방법에 대한 질문과 답변의 수를 읽고 있지만, 많은 사람들이 사용되지 않습니다 방법 "() desroy"를 사용하는 현재 실행중인 스레드

저는 Java로 작업 중이며 멀티 스레딩을 사용하여 동시에 메모장 실행 파일을 여러 번 열 수있는 코드를 작성했습니다. 이제이 실행 파일을 닫고 싶습니다. deprecated 메소드를 호출하지 않고 현재 실행중인 스레드를 닫거나 종료하여 이러한 파일을 닫는 방법이 있습니까?

포인트를 자세히 설명하거나 명확히해야 할 필요가 있으면 알려주십시오. 당신이 제공 할 수있는 모든 도움에 정말 감사드립니다!

+1

, 당신은 ([Process.destroy] 호출하여 닫을 수 있습니다 https://docs.oracle.com /javase/7/docs/api/java/lang/Process.html#destroy \ (\)). http://stackoverflow.com/questions/6356340/killing-a-process-using-java도 참조하십시오. – dnault

답변

0

I 가정 매우 위험 할 수 있습니다되지 않는 방법을 사용하고, 여기에 대한 좋은 기사가 : https://docs.oracle.com/javase/8/docs/technotes/guides/concurrency/threadPrimitiveDeprecation.html 당신은 Thread.interrupt를 사용하여 실행이 같은 캐치를 구현할 수있다() 메소드 :

catch (InterruptedException ex){ 
Thread.currentThread().interrupt(); 
    } 

: 같은 것을 할) (당신의 방법 다음

private InputStream in; 
    @Override 
     public void interrupt() { 
      super.interrupt(); 
      try { 
       in.close(); 
      } catch (IOException e) {} 
     } 

및 주요 : 스트림을 닫습니다하기 위해 인터럽트 메서드를 재정의

이 당신에게 방향을 계속하는 몇 가지 아이디어를 줄 것이다 (3210)

 Thread t = new MyThread(in); 
     t.start(); 
     Thread.sleep(1000); 
     t.interrupt(); 
     t.join(); 

희망 ... 당신이 자신을 프로세스를 생성하기 때문에

0

당신은 스레드의 프로세스를 시작하면 그 프로세스는 스레드가 자연스럽게 완료 할 수 destroy() 에드 완료 또는이다. 또는 프로세스가 완료 될 때까지 기다리지 않고 스레드를 인터럽트 할 수 있습니다. 그러나 프로세스의 제어권을 잃어 버리는 것은 좋지 않습니다.

참고 : Thread.destroy()를 사용할 때에도이 프로세스가 스레드에서 시작 죽이지 않았다.

요약하면 스레드에서 프로세스 실행을 중지하십시오.

0

는 동 기적으로 다음 쓰레기 수집하자, 그것은 (당신이 원하는 어떤 메커니즘 사용) 중지 그것에 참여하는 신호.