package org.tanukisoftware.wrapper.test; /* * Copyright (c) 1999, 2009 Tanuki Software, Ltd. * http://www.tanukisoftware.com * All rights reserved. * * This software is the proprietary information of Tanuki Software. * You shall use it only in accordance with the terms of the * license agreement you entered into with Tanuki Software. * http://wrapper.tanukisoftware.org/doc/english/licenseOverview.html * * * Portions of the Software have been derived from source code * developed by Silver Egg Technology under the following license: * * Copyright (c) 2001 Silver Egg Technology * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, * copy, modify, merge, publish, distribute, sub-license, and/or * sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following * conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. */ /** * * * @author Leif Mortenson <leif@tanukisoftware.com> */ public class DaemonThreads implements Runnable { private static boolean m_started = false; /*--------------------------------------------------------------- * Runnable Method *-------------------------------------------------------------*/ public void run() { m_started = true; while(true) { System.out.println(Thread.currentThread().getName() + " running..."); try { Thread.sleep(500); } catch (InterruptedException e) { } } } /*--------------------------------------------------------------- * Main Method *-------------------------------------------------------------*/ public static void main(String[] args) { System.out.println("Daemon Thread Test Running..."); System.out.println("Launching background daemon threads..."); DaemonThreads app = new DaemonThreads(); for (int i = 0; i < 2; i++) { Thread thread = new Thread(app, "App-Thread-" + i); thread.setDaemon(true); thread.start(); } // Wait for at least one of the daemon threads to start to make sure // this main method does not exit prematurely and trigger a JVM // shutdown. while ( !m_started ) { try { Thread.sleep( 10 ); } catch ( InterruptedException e ) { // Ignore. } } System.out.println("The JVM should exit momentarily."); System.out.println("Daemon Thread Test Main Done..."); } }