01: /**
02: * The XMOJO Project 5
03: * Copyright © 2003 XMOJO.org. All rights reserved.
04:
05: * NO WARRANTY
06:
07: * BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
08: * THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
09: * OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
10: * PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
11: * OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
12: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
13: * TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE
14: * LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
15: * REPAIR OR CORRECTION.
16:
17: * IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
18: * ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE
19: * THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
20: * GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
21: * USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF
22: * DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
23: * PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE),
24: * EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
25: * SUCH DAMAGES.
26: **/package javax.management.timer;
27:
28: import java.util.*;
29:
30: /** A WorkerThread for running tasks in a Java VM */
31:
32: class WorkerThread extends Thread {
33:
34: Scheduler scheduler = null;
35:
36: // for logging
37: public int m_current_indent_count = 0;
38: public StringBuffer m_current_indent_buffer = null;
39:
40: /** The constructor may not be necessary **/
41: public WorkerThread(Scheduler s, String nam) {
42: super (nam);
43: scheduler = s;
44: m_current_indent_buffer = new StringBuffer();
45: }
46:
47: /** Wake this one up, if waiting **/
48: synchronized void wakeUp() {
49: notifyAll();
50: }
51:
52: /** Wait here until asked to to another task **/
53: synchronized void waitUntilAsked() {
54: while ((scheduler.ready_tasks.size() == 0)
55: && (!scheduler.STOP_ALL)) {
56: try {
57: wait(100);
58: } catch (InterruptedException iex) {
59: }
60: }
61: }
62:
63: /** The run methos does the tasks as they come in **/
64: public void run() {
65: while ((!scheduler.STOP_ALL) && (!scheduler.STOP_THIS))
66: try {
67: waitUntilAsked();
68: Runnable task = scheduler.getNextTask();
69: if (task != null)
70: task.run();
71: } catch (Exception ex) {
72: System.err.println("Exception running task: " + ex);
73: // ex.printStackTrace();
74: }
75: scheduler.NUM_THREADS_STOPPED += 1;
76: scheduler.TOTAL_THREADS -= 1;
77: }
78:
79: }
|