From ee365acb1752e7d789f32df3322a23526377f736 Mon Sep 17 00:00:00 2001 From: Paul Phillips Date: Tue, 18 Oct 2011 17:57:48 +0000 Subject: Shutdown hook modification. Don't mark shutdown hooks as daemon threads, although it does not seem to make any difference. Instead have the code which waits for all threads to be complete be smarted about which codes to monitor. No review. --- test/files/run/shutdownhooks.check | 3 +++ test/files/run/shutdownhooks.scala | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 test/files/run/shutdownhooks.check create mode 100644 test/files/run/shutdownhooks.scala (limited to 'test') diff --git a/test/files/run/shutdownhooks.check b/test/files/run/shutdownhooks.check new file mode 100644 index 0000000000..29956956e3 --- /dev/null +++ b/test/files/run/shutdownhooks.check @@ -0,0 +1,3 @@ +Fooblitzky! +main#shutdown. +Test#shutdown. diff --git a/test/files/run/shutdownhooks.scala b/test/files/run/shutdownhooks.scala new file mode 100644 index 0000000000..7fe5d129d6 --- /dev/null +++ b/test/files/run/shutdownhooks.scala @@ -0,0 +1,37 @@ +object Test { + scala.sys.addShutdownHook { + Thread.sleep(1000) + println("Test#shutdown.") + } + + def daemon() = { + val t = new Thread { + override def run() { + Thread.sleep(10000) + println("Hallelujah!") // should not see this + } + } + t.setDaemon(true) + t.start() + t + } + + def nonDaemon() = { + val t = new Thread { + override def run() { + Thread.sleep(100) + println("Fooblitzky!") + } + } + t.start() + t + } + + def main(args: Array[String]): Unit = { + daemon() + nonDaemon() + scala.sys.addShutdownHook { + println("main#shutdown.") + } + } +} -- cgit v1.2.3