ScheduledThreadPoolExecutor, как остановить запускаемый класс JAVA

Я написал следующий код:

import java.util.Calendar;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

class Voter {   
public static void main(String[] args) {
    ScheduledThreadPoolExecutor stpe = new ScheduledThreadPoolExecutor(2);
    stpe.scheduleAtFixedRate(new Shoot(), 0, 1, TimeUnit.SECONDS);
}
}

class Shoot implements Runnable {
Calendar deadline;
long endTime,currentTime;

public Shoot() {
    deadline = Calendar.getInstance();
    deadline.set(2011,6,21,12,18,00);
    endTime = deadline.getTime().getTime();
}

public void work() {
    currentTime = System.currentTimeMillis();

    if (currentTime >= endTime) {
        System.out.println("Got it!");
        func();
    } 
}

public void run() {
    work();
}

public void func() {
    // function called when time matches
}
}

Я хотел бы остановить ScheduledThreadPoolExecutor при вызове func (). Дальше работать незачем! Я думаю, мне следует поместить функцию func () внутри класса Voter, а затем создать какой-то обратный вызов. Но, возможно, я смогу сделать это из класса Shoot.

Как я могу решить эту проблему правильно?

9
задан Khozzy 21 July 2011 в 10:46
поделиться