We are still looking into this issue, but thought this looks incorrect.
The first thread is registered via _Jv_ThreadRegister but does not call
_Jv_ThreadStart because it is already running. Subsequent threads are
started by _Jv_ThreadStart.
_Jv_ThreadStart does:
data->flags |= FLAG_START;
Which among other things allows the priority of a thread to be changed.
The result is that the priority of the first thread cannot be changed.
I think that data->flags |= FLAG_START; should be set for the first thread,
but I am not sure where.
All of this in the current mainline CVS sources (althought the problem
seems to be in 3.3.1 as well).
Guidance appreciated.