blob: bbb5aad92b01f0d96f7a96b7d4bcaa117ca91621 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @author Anatoly F. Bondarenko
*/
/**
* Created on 31.03.2005
*/
package org.apache.harmony.jpda.tests.jdwp.ThreadReference;
// import org.apache.harmony.jpda.tests.share.JPDADebuggeeSynchronizer;
import org.apache.harmony.jpda.tests.share.SyncDebuggee;
/**
* The class specifies debuggee for <code>org.apache.harmony.jpda.tests.jdwp.ThreadReference.Status002Test</code>.
*/
public class Status002Debuggee extends SyncDebuggee {
static Status002Debuggee status002DebuggeeThis;
static volatile boolean status002DebuggeeThreadStarted = false;
static Object waitTimeObject = new Object();
static void waitMlsecsTime(long mlsecsTime) {
synchronized(waitTimeObject) {
try {
waitTimeObject.wait(mlsecsTime);
} catch (Throwable throwable) {
// ignore
}
}
}
@Override
public void run() {
logWriter.println("--> Debuggee: Status002Debuggee: START");
status002DebuggeeThis = this;
String status002DebuggeeThreadName = "Status002DebuggeeThread";
Status002Debuggee_Thread status002DebuggeeThread
= new Status002Debuggee_Thread(status002DebuggeeThreadName);
status002DebuggeeThread.start();
while ( ! status002DebuggeeThreadStarted ) {
waitMlsecsTime(1000);
}
logWriter.println("--> Debuggee: Status002Debuggee: will sleep for 1 second");
waitMlsecsTime(1000); // to make sure that status002DebuggeeThread is sleeping
synchronizer.sendMessage(status002DebuggeeThreadName);
synchronizer.receiveMessage(); // signal to finish
try {
status002DebuggeeThread.interrupt();
} catch (Throwable thrown) {
// ignore
}
while ( status002DebuggeeThread.isAlive() ) {
waitMlsecsTime(100);
}
logWriter.println("--> Debuggee: Status002Debuggee: FINISH");
System.exit(0);
}
public static void main(String [] args) {
runDebuggee(Status002Debuggee.class);
}
}
class Status002Debuggee_Thread extends Thread {
public Status002Debuggee_Thread(String name) {
super(name);
}
@Override
public void run() {
Status002Debuggee parent = Status002Debuggee.status002DebuggeeThis;
parent.logWriter.println("--> Thread: " + getName() + ": started...");
long mlsecTimeToSleep = 1000 * 60 * 3;
parent.logWriter.println
("--> Thread: " + getName() + ": will sleep " + mlsecTimeToSleep + " mlsecs");
Status002Debuggee.status002DebuggeeThreadStarted = true;
try {
Thread.sleep(mlsecTimeToSleep);
} catch (Throwable thrown) {
// ignore
}
parent.logWriter.println("--> Thread: " + getName() + ": is finishibg...");
}
}
|