2010-08-10 4 views
2

내가 알고리즘는 클러킹을위한 스레드를 생성하고 다시 다른 스레드를

public class MyTimer extends Thread{ 

    long timeElapsed = 0; 

    public MyTimer(String parameters){ 
     //initilise staff 
    } 

    pubic void run(){ 
     long startTime = System.currentTimeMillis(); 

     //DO SOME THINGS THAT TAKE TIME 

     timeElapsed = System.currentTimeMillis() - startTime; 
     System.out.println("time elapsed = " + timeElapsed"); 

    } 
} 

에게 MyTimer로 할 몇 번을 실행하는 데 필요한 시간을 추적 다음 클래스를 구현 정말 시간이 많이 걸립니다, 그래서 그것을 통제 할 또 다른 클래스를 만들고 싶습니다. MyTimer가 30 초 후에 끝나지 않으면 스레드를 중지하고 새 매개 변수로 다시 시작하십시오. 30 초 미만이 끝나면 timeElapsed를 저장하고 MyTimer를 다시 시작하고 싶습니다. 그래도 이것은 간단하지만 스레드 풀 timeCountLathces 및 예외를 모니터 ..... 엉망으로 그래서, 거기에 내가 일할 수있는 방법이 무엇입니까? 대안 솔루션은

사전에 열심히 당신의 인생을 당신이 해결해야하는 당신이 인터럽트가는 것이 있습니다

아마

답변

2

문제를 주셔서 감사합니다 .... 수동으로 하나씩 내 500 개 테스트를 실행하는 것입니다 장기 실행 코드? 루프 자체가 매우 짧은 경우 (즉, 자주 루프하는 경우), 루프를 점검하여 중지할지 또는 계속 할지를 결정할 수 있습니다. 그것은 이상적 일 것입니다. 그러나 장시간 실행중인 작업이 데이터베이스로 이동하거나 단일 java 문이 오래 실행되면 interrupting 스레드 (예 : monitoredThread.interrupt())를 시도해야합니다. 실행중인 스레드를 인터럽트하면 오류가 기록 될 수 있지만 코드가 정상적으로 작동하면 인터럽트로 인해 코드가 수행중인 작업을 중단하고 돌아 오게됩니다.

희망이 있습니다.

+0

Thread.stop를() depricated 않고 나와 함께 잘 작동! 이 코드는 내 시간을 저장하기위한 것이므로 stop 메소드를 사용하는 데 문제가 없습니다. 나는 인터 럽트를 시도했으나 멈추려는 재치있는 기능이기 때문에 작동하지 않습니다. 루프에서 수표를 사용할 수는 있지만 다른 프로그램을 엉망으로 만들고 싶지는 않습니다. 도움을 주셔서 감사합니다 – Pitelk

0

허드슨으로 테스트/빌드를 실행하는 것을 고려해야합니다. 사용자 정의 가능한 기간 후에 Hudson 빌드 (500 개의 테스트)가 자동으로 시간 종료되도록 구성 할 수 있습니다.

물론 각 테스트마다 임의의 30 초가 주어지지 않지만 올바른 방향의 단계 인 연속 통합을 사용한다는 점에서 테스트별로 테스트를 통과하지는 마십시오.

허드슨 다운로드하고 설치하는 데 약 5 분 소요 : http://hudson-ci.org/

+0

답변을 주셔서 감사합니다. – Pitelk

관련 문제