In a class with two sync methods and one static method with sync code block, explain the monitors, priorities and dependencies?
You may answer the question without looking at the code since how a thread getting to a running state is depended on many factors: OS, number of processors, processor scheduling, and on top of those, the JVM thread scheduling. Since priority is just a hint to a JVM scheduling, it may completely ignore your priority setting. That being said, if you run this class on different machines, you could get different results. The sync methods are locked by the object instance while the static methods are locked by the class. These two locks are totally independent.
thread.start() transits the thread to RUNNABLE state. It's up to the OS scheduler and JVM scheduler to transit this thread from RUNNABLE state to RUNNING state.