2012-01-23 3 views
0

명령 프롬프트를 통해 스레드 사용자 입력을 일시 중단하고 다시 시작하는 방법은 무엇입니까?명령 프롬프트를 통해 스레드 사용자 입력을 일시 중단하고 다시 시작하는 방법은 무엇입니까?

사용자가 일시 중지하여 스레드를 정지 한 상태에서 스레드를 실행할 수있는 프로그램을 원합니다.

패키지 foo;

import java.util.Vector;

공용 클래스 ThreadTest로 {

private Vector<String> threadNames = new Vector<String>(); 

public static void main(String[] args) { 

    ThreadTest test = new ThreadTest(); 

    test.threadTest(Integer.parseInt(args[0])); 

    System.out.println(test.threadNames); 

} 

private void threadTest(int numOfThreads) { 

    Thread[] threads = new Thread[numOfThreads]; 

    for (int i = 0; i < threads.length; i++) { 

     threads[i] = new foo.ThreadTest.MyThread(); 

     threads[i].start(); 

    } 

    for (int i = 0; i < threads.length; i++) { 

     try { 

      threads[i].join(); 

     } catch (InterruptedException ignore) {} 

    } 

} 

class MyThread extends Thread { 

    public void run() { 

     for (int i = 0; i < 1000000; i++) { 

      i = i + 0; 

     } 

     threadNames.add(getName()); 

    } 

} 

}

+0

당신이하고 싶은 것을 더 설명 할 수 있다면 도움이 될 것입니다. (스레드를 직렬화하려고하지 않았 으면 좋겠다.) 코드의 일부를 일시 중지/다시 실행하고 싶습니까? – ziesemer

+0

지금까지 어떤 코드를 가지고 있었습니까? 무엇을 시도 했습니까? –

+0

나는 내 질문을 편집하고 내가 시도한 코드를 붙여 넣었다. 콘솔에서 사용자 입력에 의해 쓰레드를 일시 중단하거나 재개하는 방법을 모른다. – Aritra

답변

1

당신은 옵션이 있습니다. 모두 RPC 일종의 필요합니다. 가장 좋은 방법은 JMX을 기준으로합니다.

특히 ThreadMXBean (JMX)에서 사용할 수있는 모든 것을 살펴보십시오. 자, 이것은 당신이 찾고있는 것처럼 들리는 정확한 기능을 제공하지는 않지만, 당신이 필요로하는 확장 된 기능을 제공하는 당신 자신의 것을 작성할 수 있습니다.

또한 JMX는 일반적으로 GUI 기반 인 jconsole과 같은 것을 통해 액세스됩니다. 그러나 JMX는 API 일 뿐이며 CLI를 통해 필요한 기능을 제공하는 자체 콘솔 기반 클라이언트를 작성할 수 있습니다.

은 참조 : calling java methods from a terminal

+0

몇 가지 코드를 얻을 수 있습니까? im to java .. 그것은 나를 위해 도움이 될 것입니다 – Aritra

+1

완전한 해결책을 제공하기 위해 여기서 시간을 보낼 수는 없지만 제가 제공 한 세부 정보는 적절한 정보를 줄 수 있어야합니다. A) 기존 정보 검색 해결책, 또는 B) 자신의 것을 배우고 쓸 수있는 적절한 자원을 찾으십시오. 그렇지 않으면, 다른 누군가가 당신에게 더 나은 대답을 줄 수 있기를 바랍니다. – ziesemer

0

당신은 두 개의 스레드로 매우 간단하게이 문제를 해결할 수 있을까?

  • 스레드 1은 사용자 입력을 듣습니다. 특정 사용자 입력에서 스레드 2를 일시 중단하거나 다시 시작합니다.
  • 스레드 2는 수행 할 작업 (예 : )을 일시 중지했다가 다시 시작합니다.

Java Concurrency Tutorials을 살펴볼 수도 있습니다.

+0

실제로 인스턴트 다운 또는 재개를위한 프로그램을 받고 있지만 사용자 입력 컨트롤은 사용하지 않습니다. – Aritra

관련 문제