2009-10-15 6 views
0

나는 인터프리터와 유사한 GUI를 가지고있다. 사용자가 자이 썬 (Python을 Java로 구현)에서 스크립트를 작성하고 원하는 때에 실행할 수 있습니다. 그 외에도, 나는 사용자가 원할 때마다 즉시 실행을 종료 할 수 있기를 원한다.요청에 따라 감독되지 않은 스크립트를 즉시 영구히 유지하는 방법은 무엇입니까?

사실, 나는 그것을하는 법을 정말로 모른다. 스크립트가 다른 스레드에서 실행되고 있지만 스레드/스크립트에서 실행중인 내용을 알지 못하게하는 등 실행 중 스레드를 중지/중단/종료하는 보안 방법을 모르겠습니다. 간단한 작업이나 DB에 대한 무거운 SQL 쿼리 일 수도 있고, DB는 신중한 리소스 처리가 필요한 작업 일 수도 있습니다.

주문형 주문형 프로그램을 즉시 종료 할 수 있습니까?

답변

0

불행히도 스레드를 즉시 안전하게 종료 할 수있는 안전한 방법은 없습니다. 이것이 Thread.stop이 더 이상 사용되지 않는 이유 중 일부입니다.

이것은 복잡한 문제이며 스레드가 어떻게 작동하는지에 따라 달라집니다. 이 작업을 수행하는 모든 스레드에 대한 일반적인 솔루션은 존재하지 않습니다. 스레드가 루프에 있지 않은 것처럼 들리므로 루프에서 변수를 폴링하지 않아도됩니다. 당신은 여전히되지 않는 것은 Thread.stop를 사용할 수있는 최후의 수단으로

MyThread extends Thread { 
    PythonProcess p; 

    void run() { 
     p = startPython(); 
    } 

    void stopMe() { 
     p.halt(); 
    } 
} 

하지만 안전하지 않을 것이며, 가능한 모든 경우 피해야한다 :하지만 당신은 변화 할 수 있습니다. 그 다음에 어쩌면 프로세스 포크를 수행하고 OS 수준에서 수동으로 처리 할 수 ​​있지만 그다지 자바처럼되지는 않습니다.

관련 문제