|
Hi Mandy, This test: if ((threadStatus & JVMTI_THREAD_STATE_RUNNABLE) == 1) {
is always false, since JVMTI_THREAD_STATE_RUNNABLE is 4.
(NetBeans 7.0 helpfully flags this; I'm not sure if earlier
versions do.) But, once corrected, I think you could use this idea further to write a much simpler and faster method, on these lines: public static Thread.State toThreadState(int threadStatus) {
if ((threadStatus & JVMTI_THREAD_STATE_RUNNABLE) != 0) {
return RUNNABLE;
} else if ((threadStatus & JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER) != 0) {
return BLOCKED;
} else if ((threadStatus & JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT) != 0) {
return TIMED_WAITING;
} else if ((threadStatus & JVMTI_THREAD_STATE_WAITING_INDEFINITELY) != 0) {
return WAITING;
} else if ((threadStatus & JVMTI_THREAD_STATE_TERMINATED) != 0) {
return TERMINATED;
} else {
return NEW;
}
}
You could tweak the order of the tests based on what might be the
relative frequency of the different states but it probably isn't
worth it. Éamonn On 3/12/10 11:52 PM, Mandy Chung wrote: Fix for 6977034: Thread.getState() very slow |
- Review request for 6977034 Thread.getState() very slow Mandy Chung
- Re: Review request for 6977034 Thread.getState() very ... Rémi Forax
- Re: Review request for 6977034 Thread.getState() very ... Eamonn McManus
- Re: Review request for 6977034 Thread.getState() v... Brian Goetz
- Re: Review request for 6977034 Thread.getState... Eamonn McManus
- Re: Review request for 6977034 Thread.getS... Brian Goetz
- Re: Review request for 6977034 Thread... David Holmes
- Re: Review request for 6977034 Th... Doug Lea
- Re: Review request for 6977034 Thread.getState() v... Mandy Chung
- Re: Review request for 6977034 Thread.getState... Eamonn McManus
- Re: Review request for 6977034 Thread.getS... Mandy Chung
- Re: Review request for 6977034 Thread.getState... David Holmes
- Re: Review request for 6977034 Thread.getState... Robert Lougher
