01: package org.tanukisoftware.wrapper.test;
02:
03: /*
04: * Copyright (c) 1999, 2006 Tanuki Software Inc.
05: *
06: * Permission is hereby granted, free of charge, to any person
07: * obtaining a copy of the Java Service Wrapper and associated
08: * documentation files (the "Software"), to deal in the Software
09: * without restriction, including without limitation the rights
10: * to use, copy, modify, merge, publish, distribute, sub-license,
11: * and/or sell copies of the Software, and to permit persons to
12: * whom the Software is furnished to do so, subject to the
13: * following conditions:
14: *
15: * The above copyright notice and this permission notice shall be
16: * included in all copies or substantial portions of the Software.
17: *
18: * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19: * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
20: * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21: * NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
22: * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
23: * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
24: * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
25: * OTHER DEALINGS IN THE SOFTWARE.
26: *
27: *
28: * Portions of the Software have been derived from source code
29: * developed by Silver Egg Technology under the following license:
30: *
31: * Copyright (c) 2001 Silver Egg Technology
32: *
33: * Permission is hereby granted, free of charge, to any person
34: * obtaining a copy of this software and associated documentation
35: * files (the "Software"), to deal in the Software without
36: * restriction, including without limitation the rights to use,
37: * copy, modify, merge, publish, distribute, sub-license, and/or
38: * sell copies of the Software, and to permit persons to whom the
39: * Software is furnished to do so, subject to the following
40: * conditions:
41: *
42: * The above copyright notice and this permission notice shall be
43: * included in all copies or substantial portions of the Software.
44: */
45:
46: /**
47: *
48: *
49: * @author Leif Mortenson <leif@tanukisoftware.com>
50: */
51: public class DaemonThreads implements Runnable {
52: private static boolean m_started = false;
53:
54: /*---------------------------------------------------------------
55: * Runnable Method
56: *-------------------------------------------------------------*/
57: public void run() {
58: m_started = true;
59: while (true) {
60: System.out.println(Thread.currentThread().getName()
61: + " running...");
62: try {
63: Thread.sleep(500);
64: } catch (InterruptedException e) {
65: }
66: }
67: }
68:
69: /*---------------------------------------------------------------
70: * Main Method
71: *-------------------------------------------------------------*/
72: public static void main(String[] args) {
73: System.out.println("Daemon Thread Test Running...");
74: System.out.println("Launching background daemon threads...");
75:
76: DaemonThreads app = new DaemonThreads();
77: for (int i = 0; i < 2; i++) {
78: Thread thread = new Thread(app, "App-Thread-" + i);
79: thread.setDaemon(true);
80: thread.start();
81: }
82:
83: // Wait for at least one of the daemon threads to start to make sure
84: // this main method does not exit prematurely and trigger a JVM
85: // shutdown.
86: while (!m_started) {
87: try {
88: Thread.sleep(10);
89: } catch (InterruptedException e) {
90: // Ignore.
91: }
92: }
93:
94: System.out.println("The JVM should exit momentarily.");
95:
96: System.out.println("Daemon Thread Test Main Done...");
97: }
98: }
|