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」カテゴリの記事
- Java 17 への移行(7) - OpenDolphin client の対応 (2023.02.04)
- Java 17 への移行(6) - Hibernate 6 でやらかす(2023.02.03)
- Java 17 への移行(5) - OpenDolphin server の対応(2023.02.02)
- Java 17 への移行(4) - OpenSearch の準備 [ubuntu 編](2023.02.01)
- Java 17 への移行(3) - OpenSearch の準備 [mac 編](2023.01.31)