ScheduledExecutorService の使い回し
jconsole というツールが jdk に標準で入っている。ヒープメモリやスレッドの状態を教えてくれるツールであるが,そんなものがあることを初めて知った。jconsole で見ていたら,靴ボタンを押して受付患者チェックをすると,ライブスレッドがどんどん増えていくことに気がついた。試しに靴ボタンを連打してみたら,えらいことになった。普通そんなことはしないので問題ないのかもしれないが,気持ち悪いのでScheduledExecutorService は使い回すことにした。これで,靴ボタンを連打しても大丈夫。
plugin/WatingListImpl.java
////↓
private DocumentPeeker peeker;
private ScheduledExecutorService schedule;
private static final Color SHOSHIN_COLOR = new Color(180,220,240); //青っぽい色
private static final Color KARTE_EMPTY_COLOR = new Color(250,200,160); //茶色っぽい色
private static final Color DIAGNOSIS_EMPTY_COLOR = new Color(243,255,15); //黄色
////↑
/**
* Creates new WatingList
*/
public WatingListImpl() {
setName(NAME);
////↓ 使い回すオブジェクト
peeker = new DocumentPeeker();
schedule = Executors.newSingleThreadScheduledExecutor();
////↑
}
・
・
public void restartCheckTimer() {
・
・
////↓ schedule は,コンストラクタで作って使い回すことにする
// ScheduledExecutorService schedule = Executors.newSingleThreadScheduledExecutor();
timerHandler = schedule.scheduleWithFixedDelay(pvtChecker, 0, checkInterval, TimeUnit.SECONDS);
}
・
・
public void checkFullPvt() {
if (timerHandler != null) {
////↓ 定期チェック中ならチェックしない
if (timerHandler.getDelay(TimeUnit.SECONDS) <= 1) {
logger.info("regular pvtChecker in process");
return;
}
////↑
timerHandler.cancel(false);
}
・
・
////↓ schedule は,コンストラクタで作って使い回すことにする
// ScheduledExecutorService schedule = Executors.newSingleThreadScheduledExecutor();
timerHandler = schedule.scheduleWithFixedDelay(pvtChecker, checkInterval, checkInterval, TimeUnit.SECONDS);
}
« カルテ保存後ウインドウを閉じる(続) | トップページ | SendClaimImpl.java の BufferedOutputStream »
「OpenDolphin」カテゴリの記事
- OpenDolphin: Java 25 / WildFly 38 への移行(2025.11.09)
- 運用17年目のまとめ(2025.02.03)
- IME on/off の切換 - その2(2024.12.02)
- OrcaController オルコン(2024.11.28)
- OpenDolphin: java 21 / wildfly 34 への移行(2024.11.08)


