2014-10-10 2 views
1

내 스레드 내에서, 나는 모든 것을 x 초로 가정합니다. 예 : x=3으로하고, 초에 그 일을해야합니다 1, 4, 7, .... 이 사이에 통과하는 시간을 추적 할 수 없습니다, 따라서이 x초 기간 동안해야 할 다른 것은 (들) 중단 될 수 있기 때문에 x초의 스레드 wait() 만들기시스템 시계 찾기 - Java

do-- 않을 것이다 그것이 예정되어있는 길. 그래서 스레드는 x 초가 시계에 전달되었음을 알 수있는 효율적인 방법을 제시해야합니다.

효율적인 방법은 무엇입니까?

내가 지금 가지고있는 유일한 방법은 시스템 시계가 초 또는 1인지, 4인지 또는 7인지를 계속 확인하는 것입니다. 즉 i 인 경우 i%3==1입니다. 그러나 이것은 너무 낭비적이고 좋지 않습니다.

이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

TIA.

// ==============

편집 :

내 생각이 나있는 시스템 시계를 검색하는 방법과 매 간격마다 저를 방해합니다.

Java에 이와 같은 방법이 있습니까?

+0

['Timer'] (http://docs.oracle.com/javase/8/docs/api/java/util/Timer.html)를 찾으십니까? 아마도'scheduleAtFixedRate' 메소드 중 하나일까요? – ajb

+0

@ajb는 타이머를 볼 것입니다. 당신이 한 일은 괜찮은 것 같지만, 만약 내가 가지고 있다면 자바가 가지고있는 것 대신에 shd가됩니다. – Roam

답변

0

나는 무엇을하려고하는지 잘 모르겠다.

boolean interrupted; 
long endWait = System.currentTimeMillis() + 3000; // or 1000 * x 
do { 
    interrupted = false; 
    long timeRemaining = endWait - System.currentTimeMillis(); 
    if (timeRemaining <= 0) { 
     break; 
    } 
    try { 
     Thread.sleep(timeRemaining); 
    } catch (InterruptedException e) { 
     ... what you need to do when interrupted 
     interrupted = true; 
    } 
} while (interrupted);