아마도이 질문
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
public class Test {
public static void main(String[] args) throws Exception {
ExecutorService executor = Executors.newSingleThreadExecutor();
Future<String> future = executor.submit(new Task());
try {
System.out.println("Started..");
System.out.println(future.get(3, TimeUnit.SECONDS));
System.out.println("Finished!");
} catch (TimeoutException e) {
System.out.println("Terminated!");
}
executor.shutdownNow();
}
}
class Task implements Callable<String> {
@Override
public String call() throws Exception {
Thread.sleep(5000); //It means 5 seconds
return "Ready!";
}
}
에 대답 수 있습니다. 계산이 완료되었는지 확인하고, 완료를 기다리고, 계산 결과를 검색하는 메소드가 제공됩니다. 결과는 계산이 완료되면 get 메소드를 사용하여 검색 할 수 있습니다. 필요할 때까지 준비가 완료 될 때까지 블로킹합니다.
취소는 취소 방법으로 수행됩니다. 작업이 정상적으로 완료되었는지 또는 취소되었는지를 확인하기위한 추가 방법이 제공됩니다. 계산이 완료되면 계산을 취소 할 수 없습니다. 취소 가능성을 위해 Future를 사용하려고하지만 사용 가능한 결과를 제공하지 않으려면 Future 형식의 형식을 선언하고 기본 작업의 결과로 null을 반환 할 수 있습니다.
실행하는 당신이 TimerTask
을 예약 할 수있는
이
간단한 그냥 java.util.Timer
를 사용하는 수 있습니다 ... 그것을 달성하기 위해 여러 가지 방법이 많이 아마이 있습니다이 site
너는 말을하고 있니? –
@Baadshah 구현 방법을 모른다. 스레드가 유일한 방법이라면 스레드를 의미한다. bar 함수가 스레드가 아닙니다. – user2353516
['java.util.Timer'] (http://docs.oracle.com/javase/7/docs/api/java/util/Timer.html) 또는 Swing, ['javax.swing.Timer'] (http://docs.oracle.com/javase/7/docs/api/javax/swing/Timer.html) – MadProgrammer