2015-01-18 8 views
0

다음은 JUNG documentation에서 언급 한 Runnable을 구현하는 다음과 같은 animator 클래스입니다.미리 구현 된 Runnable 클래스를 java에서 일시 중지하는 방법은 무엇입니까?

어떤 조건이 참인 경우 thread을 어떻게 알 수 있습니까? pause 얼마 후 start이 실행 중입니까? 이 프로그램은 잠하여 원하는 목적지

switch (args[0]) 
    { 
     case "agent": 
      int size=nodeAttributes.size(); 
      int i; 
      for(i=0;i<size;i++) 
      { 
       if(args[1].equals(nodeAttributes.get(i).nodeName)) 
       { 
        VertexCollider vtxCol = new VertexCollider(layout, panel,args[1], args[2] , args[1] , nodeAttributes.get(i)); 
        vtxCol.setMaximumIterations(1000); 
        vtxCol.setDesiredPrecision(1); 
        vtxCol.initialize(); 
        Animator animator = new Animator(vtxCol); 

        animator.start(); 
        if(nodeAttributes.get(i).isMoving) 
        { 
         animator.stop(); 
         animator.wait(10000); 
         System.out.println("stopped"); 
        } 
        nodeAttributes.get(i).isMoving = true; 
        break; 
       } 
      } 
      break; 
    } 

답변

0

일시 중지하려면하여 animatorThread.sleep() 기능 또는 wait() 기능이 목적을 위해 일하려고 그들이이 초기화 기능을 중지하는 경우에도 먼저 다른 Thread.Because에 animator 객체와 vtxCol 객체 초기화를 이동해야합니다 animator 너무 귀하의 요구에 적합하지 않을 수 있습니다. 당신이 만드는 고려해야 할 또 다른 별도의 스레드에 animator 객체 생성을 이동 한 후

일부 LinkedList, Array 나에 데이터를 그들에 의해 vtxColanimator 객체를 초기화하고 통과하기 위해 귀하의 이동 데이터를 보유 Collection 어떤 종류의 실. 그렇다면 Thread.sleep() 함수는 별도의 스레드가 생성되어 사용자의 필요에 응답 할 수 있습니다.

0

장소 : (? 문는 IF 내부)

try { 
    Thread.sleep(1); 
} catch (InterruptedException e) { 
    e.printStackTrace(); 
} 

이 사용자가 원하는 그러나 밀리 초 단위로 잠을 스레드를 알려줄 것입니다. DO-동안의

: 그것은 거짓이 될 때까지

do{ 

    try { 
     Thread.sleep(1); 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
    } 

}while(something() == true); 

이, 값을 확인 계속됩니다.

+0

저는'program' 절전을하고 싶지 않습니다. 난'runnable'을 잠시 동안 잠자기하고 구현 한'animator' 클래스를 원합니다. –

+0

애니메이터가 자체 스레드입니까? @AliNfr – JClassic

+0

네, 문서는 그것이 독립적 인'쓰레드 '이고, 또한'보호 된 쓰레드'라고합니다. –

1

참조한 문서에 따르면 Animator은 반복 루프 사이에서 일정 시간 동안 일시 중지 될 수 있습니다.

animator.setSleepTime(10000); 

일시 중지 조건이 종료되면 잠자기 시간을 훨씬 더 짧은 간격으로 설정할 수 있습니다.

그러나 일시 중지 조건이 참일 때 Animator가 완전히 중지되기를 원하는 것처럼 보입니다. 이 경우 해당 시간에 (코드가 수행 중일 때) stop() 애니메이터를 추천 한 다음 일시 중지 조건이 끝나면 start()을 다시 추천합니다. 중지 및 시작 메소드를 반복적으로 호출 할 수있는 것 같습니다.

+0

애니메이터를'멈추거나'잠자기 시간을 길게 설정하면 문제가 발생합니다. 프로그램은 조건 값을 확인하는 함수로 돌아 가지 않습니다 (이 함수를 실행 한 후에는 다른 함수가 실행되지 않습니다). '시작 '또는'잠자기 시간을 더 짧은 간격으로 변경 '어디에서 다시 다시 검사해야합니까? –

+0

죄송합니다. 소량의 정보를 사용하여 디자인 문제를 해결할 수 없습니다. 애니메이터가 잠시 기다리 길 원하면 루프 사이에서 잠자기 상태로 말할 수 있습니다. 애니메이터를 중지하고 시작하려면 돌아와서 시작하는 방법을 알아야합니다. – gknicker

+0

나는 당신이보기를 원한다면 다른 질문에서 완전한 구현을 가지고있다 [http://stackoverflow.com/questions/28003792/how-to-pause-jung-animator-given-an-iterativeprocess-by-using -thread-sleep? rq = 1]. –