ScalaでJVMの終了時のフック処理を行う
ただのメモ
java.lang.Runtimeを使うとメソッド一個で終わるような処理でも
new Thread { override def run() { } }
しなきゃいけなくて、わりとしんどい。あとで読んだ時に。
Playを真似て書いてたので https://github.com/playframework/playframework/blob/2.2.x/framework/src/play/src/main/scala/play/core/server/NettyServer.scala#L233 と使われてるし、それ以外の方法ないのかなぁと思ってたら
@BlackPrincessW これ? https://t.co/PSwlQGR0Lm
— Kenji Yoshida (@xuwei_k) November 12, 2013
というのを教えてもらってのでこれ使いましょう。
https://github.com/scala/scala/blob/v2.10.3/src/library/scala/sys/package.scala#L63-L75
sys.addShutdownHook(dispose)