2014-12-02 5 views
0

프로그램 A :Java에서 실행중인 루프를 종료하는 방법은 무엇입니까?

public void startThreadPool2(boolean flag) { 
    while(flag) { 
     Runnable run = new Runnable() { 
      @Override 
      public void run() { 
       System.out.println("running"); 
      } 
     }; 
     service.execute(run); 
     try { 
      Thread.sleep(3000); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

프로그램 B :

public static void main(String[] args) { 
    SentimentAnalyse sentimentAnalyse = SentimentAnalyse.getInstance(); 
    sentimentAnalyse.startThreadPool2(true); 
} 

프로그램 C :

public static void main(String[] args) { 
    //how to stop the while loop 
} 

루프가 실행 계속 나는 다른 프로그램에서 그것을 중지하는 방법을 모른다 동안 .

// 업데이트 어쩌면 모든 작품, 내 싱글 톤이 일식 다른 프로그램에서 다른 클래스 로더를 사용하기 때문에 작동하지 않는 것을 알 수 있습니다.

+0

'플래그'는 값에 의해 전달되므로 루프는 영원히 또는 전혀 실행되지 않습니다. 또한, 'while (flag) {if (flag == false) break; ...}'는 중복됩니다. – 5gon12eder

+0

프로그램 C에서 어떤 루프를 참조하는지 명확하지 않습니다. – kraskevich

+0

프로그램 B에서 호출 한 A에서 while 루프를 중지하십시오. 정확하게 설명하는 방법을 모르겠습니다. 어쩌면 우리는 프로그램 B를 중지 시키거나 프로그램 A의 while 루프를 멈출 수 있다고 말할 수 있습니다. – cow12331

답변

1

SentimentAnalyse에 깃발을 저장하고 그에 대한 세터를 제공하십시오! porgram C (무엇인지)는 프로그램 b에서 작성한 SentimentAnalyse의 인스턴스에 대한 참조가 필요합니다. 프로그램 C에서 false로 설정기를 호출하여 프로그램에서 루프를 중지하십시오.

+0

작동하지 않는 것 같습니다. Singleton을 사용하여 동일한 인스턴스를 찾을 수 있습니다. 프로그램 B에서 while (true)와 함께 startThreadPool2()를 호출합니다. C에서 플래그를 설정하면 while (false)와 함께 startThreadPool2()를 호출한다는 의미이며 아무 일도 발생하지 않습니다. 같은 인스턴스를 찾을 수는 있지만 메서드를 찾을 수 없습니다. – cow12331