001: package org.tanukisoftware.wrapper.test;
002:
003: /*
004: * Copyright (c) 1999, 2006 Tanuki Software Inc.
005: *
006: * Permission is hereby granted, free of charge, to any person
007: * obtaining a copy of the Java Service Wrapper and associated
008: * documentation files (the "Software"), to deal in the Software
009: * without restriction, including without limitation the rights
010: * to use, copy, modify, merge, publish, distribute, sub-license,
011: * and/or sell copies of the Software, and to permit persons to
012: * whom the Software is furnished to do so, subject to the
013: * following conditions:
014: *
015: * The above copyright notice and this permission notice shall be
016: * included in all copies or substantial portions of the Software.
017: *
018: * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
019: * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
020: * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
021: * NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
022: * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
023: * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
024: * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
025: * OTHER DEALINGS IN THE SOFTWARE.
026: *
027: *
028: * Portions of the Software have been derived from source code
029: * developed by Silver Egg Technology under the following license:
030: *
031: * Copyright (c) 2001 Silver Egg Technology
032: *
033: * Permission is hereby granted, free of charge, to any person
034: * obtaining a copy of this software and associated documentation
035: * files (the "Software"), to deal in the Software without
036: * restriction, including without limitation the rights to use,
037: * copy, modify, merge, publish, distribute, sub-license, and/or
038: * sell copies of the Software, and to permit persons to whom the
039: * Software is furnished to do so, subject to the following
040: * conditions:
041: *
042: * The above copyright notice and this permission notice shall be
043: * included in all copies or substantial portions of the Software.
044: */
045:
046: import org.tanukisoftware.wrapper.WrapperManager;
047:
048: /**
049: *
050: *
051: * @author Leif Mortenson <leif@tanukisoftware.com>
052: */
053: public class LongRunningBackgroundThreads implements Runnable {
054: private volatile int _threadCount;
055:
056: /*---------------------------------------------------------------
057: * Runnable Method
058: *-------------------------------------------------------------*/
059: public void run() {
060: ++_threadCount;
061: int loops = 0;
062:
063: while (loops < 10) {
064: loops++;
065: System.out.println(Thread.currentThread().getName()
066: + " loop #" + loops);
067: try {
068: Thread.sleep(500);
069: } catch (InterruptedException e) {
070: }
071: }
072: System.out.println(Thread.currentThread().getName()
073: + " stopping.");
074: if (--_threadCount <= 0) {
075: System.out
076: .println("The JVM and then the wrapper should exit now.");
077: }
078: }
079:
080: /*---------------------------------------------------------------
081: * Main Method
082: *-------------------------------------------------------------*/
083: public static void main(String[] args) {
084: System.out
085: .println("Long-running Background Threads Running...");
086:
087: LongRunningBackgroundThreads app = new LongRunningBackgroundThreads();
088: for (int i = 0; i < 2; i++) {
089: Thread thread = new Thread(app, "App-Thread-" + i);
090: thread.start();
091: }
092:
093: System.out.println("Running as a service: "
094: + WrapperManager.isLaunchedAsService());
095: System.out.println("Controlled by wrapper: "
096: + WrapperManager.isControlledByNativeWrapper());
097:
098: System.out
099: .println("Long-running Background Threads Main Done...");
100: }
101: }
|