94
95 // try acquire the same lock as auxiliaryThread, switch state to 'wait on monitor'
96 synchronized (this) {
97
98 }
99 }
100
101 private int currentState = 1;
102
103 public void nextState() {
104 // check is thread states change as expected
105 if (isExecutedWithErrors)
106 throw new TestBug(errorMessage);
107
108 switch (currentState++) {
109 case 1:
110 // start thread
111 start();
112
113 while (!isRunning)
114 yield();
115
116 break;
117 case 2:
118 // stop running
119 isRunning = false;
120
121 while (this.getState() != Thread.State.TIMED_WAITING)
122 yield();
123
124 break;
125 case 3:
126 waitState = true;
127
128 // stop sleeping
129 interrupt();
130
131 while (getState() != Thread.State.WAITING)
132 yield();
133
134 break;
135 case 4:
136 waitState = false;
137
138 // stop wait
139 synchronized (waitOnObject) {
140 waitOnObject.notify();
141 }
142
143 while (!readyToBeBlocked || (getState() != Thread.State.BLOCKED))
144 yield();
145
146 break;
147 case 5:
148 // let StateTestThread thread acquire lock
149 auxiliaryThread.releaseLock();
150 try {
151 join();
152 } catch (InterruptedException e) {
153 throw new TestBug("Unexpected exception: " + e);
154 }
155 break;
156
157 default:
158 throw new TestBug("Invalid thread state");
159 }
160 }
161 }
|
94
95 // try acquire the same lock as auxiliaryThread, switch state to 'wait on monitor'
96 synchronized (this) {
97
98 }
99 }
100
101 private int currentState = 1;
102
103 public void nextState() {
104 // check is thread states change as expected
105 if (isExecutedWithErrors)
106 throw new TestBug(errorMessage);
107
108 switch (currentState++) {
109 case 1:
110 // start thread
111 start();
112
113 while (!isRunning)
114 Thread.yield();
115
116 break;
117 case 2:
118 // stop running
119 isRunning = false;
120
121 while (this.getState() != Thread.State.TIMED_WAITING)
122 Thread.yield();
123
124 break;
125 case 3:
126 waitState = true;
127
128 // stop sleeping
129 interrupt();
130
131 while (getState() != Thread.State.WAITING)
132 Thread.yield();
133
134 break;
135 case 4:
136 waitState = false;
137
138 // stop wait
139 synchronized (waitOnObject) {
140 waitOnObject.notify();
141 }
142
143 while (!readyToBeBlocked || (getState() != Thread.State.BLOCKED))
144 Thread.yield();
145
146 break;
147 case 5:
148 // let StateTestThread thread acquire lock
149 auxiliaryThread.releaseLock();
150 try {
151 join();
152 } catch (InterruptedException e) {
153 throw new TestBug("Unexpected exception: " + e);
154 }
155 break;
156
157 default:
158 throw new TestBug("Invalid thread state");
159 }
160 }
161 }
|