- final int delay;
- private Object lock = new Object();
- private MyTimer timer = new MyTimer(DelayedText.this.toString());
- private ModifyListener delayedModifyListener;
- private ServerPushSession pushSession;
-
- private Text text;
-
- private ModifyListener modifyListener = new ModifyListener() {
- private static final long serialVersionUID = 1117506414462641980L;
+ private final static ScheduledExecutorService scheduler;
+ static {
+ // create only one scheduler, in order not to exhaust threads
+ scheduler = Executors.newScheduledThreadPool(0, (r) -> {
+ Thread thread = new Thread(r, "Delayed text scheduler");
+ // we mark threads as deamons so that the shutdown hook is triggered
+ thread.setDaemon(true);
+ return thread;
+ });
+ Runtime.getRuntime().addShutdownHook(new Thread(() -> {
+ scheduler.shutdown();
+ }, "Shutdown delayed text scheduler"));
+ }
+ private final static int DEFAULT_DELAY = 800;