@@ -2783,21 +2783,59 @@ public State getState() {
2783
2783
return threadState ();
2784
2784
}
2785
2785
2786
+ /**
2787
+ * Returns the translation from a J9VMThread state to a Thread::State.
2788
+ *
2789
+ * @return this thread's state.
2790
+ *
2791
+ * @see State
2792
+ */
2793
+ private State translateJ9VMThreadStateToThreadState (int status ) {
2794
+ switch (status ) {
2795
+ case 1 : // J9VMTHREAD_STATE_RUNNING
2796
+ return State .RUNNABLE ;
2797
+ case 2 : // J9VMTHREAD_STATE_BLOCKED
2798
+ return State .BLOCKED ;
2799
+ case 4 : // J9VMTHREAD_STATE_WAITING
2800
+ case 0x80 : // J9VMTHREAD_STATE_PARKED
2801
+ return State .WAITING ;
2802
+ case 8 : // J9VMTHREAD_STATE_SLEEPING
2803
+ case 64 : // J9VMTHREAD_STATE_WAITING_TIMED
2804
+ case 0x100 : // J9VMTHREAD_STATE_PARKED_TIMED
2805
+ return State .TIMED_WAITING ;
2806
+ case 32 : // J9VMTHREAD_STATE_DEAD
2807
+ return State .TERMINATED ;
2808
+ default :
2809
+ synchronized (interruptLock ) {
2810
+ if (eetop == NO_REF ) {
2811
+ return State .TERMINATED ;
2812
+ }
2813
+ return State .values ()[getStateImpl (eetop )];
2814
+ }
2815
+ }
2816
+ }
2817
+
2786
2818
/**
2787
2819
* Returns the state of this thread.
2788
2820
* This method can be used instead of getState as getState is not final and
2789
2821
* so can be overridden to run arbitrary code.
2790
2822
*/
2791
2823
State threadState () {
2792
- synchronized ( interruptLock ) {
2824
+ if ( started ) {
2793
2825
if (eetop == NO_REF ) {
2794
- if (isDead ()) {
2795
- return State .TERMINATED ;
2826
+ return State .TERMINATED ;
2827
+ }
2828
+ if (holder == null ) {
2829
+ synchronized (interruptLock ) {
2830
+ if (eetop == NO_REF ) {
2831
+ return State .TERMINATED ;
2832
+ }
2833
+ return State .values ()[getStateImpl (eetop )];
2796
2834
}
2797
- return State .NEW ;
2798
2835
}
2799
- return State . values ()[ getStateImpl ( eetop )] ;
2836
+ return translateJ9VMThreadStateToThreadState ( holder . threadStatus ) ;
2800
2837
}
2838
+ return State .NEW ;
2801
2839
}
2802
2840
2803
2841
/**
0 commit comments