Java에서 고정 간격 opetation을 수행 할 때마다 ScheduledExecutorService을 조사해야합니다. 귀하의 경우에는, 뭔가 같은 : 시스템이 클래스가로드되는 순간을 시작
private static final ScheduledExecutorService SERVICE = Executors.newScheduledThreadPool(1,
new ThreadFactory() {
public Thread newThread(Runnable r) {
Thread t = new Thread("Tick Thread", r);
t.setDaemon(true);
return t;
}
});
private static final AtomicReference<Controller> CONTROLLER = new AtomicReference<>();
public static final void setController(Controller c) {
CONTROLLER.compareAndSet(null, c);
}
static {
Runnable task = new Runnable() {
public void run() {
//do something each second....
// call the 'update()' method:
Controller c = CONTROLLER.get();
if (c != null) {
c.update();
}
}
}
// delay 1 second, repeat each second.
service.scheduleAtFixedRate(task, 1, 1, TimeUnit.SECONDS);
}
당신은 그것을 가지고 가고, 클래스의 정적 초기화에 넣어, 당신은 얻을 것이다 할 수
.... 당신은 가능성이 것입니다 ExecutorService의 스레드를 데몬 thead로 바꾸려면 ..... 사용자 지정 스레드 팩터 리가 필요합니다. .....
위 코드는 즉시 시작되고 컨트롤러가있을 경우 컨트롤러를 업데이트합니다 .
c 컨트롤러를 만드는 순간 정적 메서드를 사용하여 값을 설정할 수 있습니다.
@G Boggs [this] (http://stackoverflow.com/questions/16128423/how-to-update-the-label-box-every-2-seconds-in-java-fx/ 16138351 # 16138351). – Chris
@Chris 나는 이것이 내가하고 싶은 것을 완전히 확신하지 못한다. 수업 시작부터 데이터 수집을 시작하겠습니다. 우선, 어떻게해야합니까? 둘째, 나는 함수를 호출하고 싶지 않습니다. 스레드를 본질적으로 시작하기를 원합니다. –