I don't believe this is specified as precisely as either of the two quotes would suggest. All I could find was:
Every thread has a priority. Threads with higher priority are executed in preference to threads with lower priority. When code running in some thread creates a new Thread object, the new thread has its priority initially set equal to the priority of the creating thread.
Beyond that, I believe the mechanics are platform- and JVM-specific. On the platforms that I am familiar with, the JVM uses OS threads and thus relies on the OS scheduler.
That said, given that all application threads by default have the same priority, it would be incredibly inconvenient if those threads were not capable of preempting one another.