2010-02-20 6 views
3

저는 시간 스탬프와 타이머, 그리고 Java와 관련이있는 인터넷 검색을 해왔습니다. 나는 나를 위해 일하는 것을 얻을 수없는 것 같습니다.타임 스탬프, 타이머, 시간 질문

나는

while(true) 
{ 

    while(mytimer.millsecounds < amountOftimeIwantLoopToRunFor) 
    { 
     dostuff(); 
    } 

    mytimer.rest(); 

} 

내가 사용할 수있는 데이터 유형 모든 아이디어를 아래의 의사 코드와 같은 while 루프를 제어하는 ​​타임 스탬프가 필요합니다; Timestamp를 시도했지만 작동하지 않았습니다.

감사 인 Ciaran

답변

2

과 같이 수행

long maxduration = 10000; // 10 seconds. 
long endtime = System.currentTimeMillis() + maxduration; 

while (System.currentTimeMillis() < endtime) { 
    // ... 
} 

(고급) 대안 java.util.concurrent.ExecutorService을 사용합니다. SSCCE :

package com.stackoverflow.q2303206; 

import java.util.Arrays; 
import java.util.concurrent.Callable; 
import java.util.concurrent.ExecutorService; 
import java.util.concurrent.Executors; 
import java.util.concurrent.TimeUnit; 

public class Test { 

    public static void main(String... args) throws Exception { 
     ExecutorService executor = Executors.newSingleThreadExecutor(); 
     executor.invokeAll(Arrays.asList(new Task()), 10, TimeUnit.SECONDS); // Get 10 seconds time. 
     executor.shutdown(); 
    } 

} 

class Task implements Callable<String> { 
    public String call() throws Exception { 
     while (true) { 
      // ... 
     } 
     return null; 
    } 
} 
+0

감사합니다. –