1. スレッド 2 またはスレッド 3 のいずれか。保証はありません:
同様に、スレッドがモニターの所有権を付与される順序や、notify メソッドまたは notifyAll メソッドに応答してスレッドが復帰する順序についても、仮定を立てる必要はありません。
http://docs.oracle.com/javase/1.5.0/docs/guide/vm/thread-priorities.html#general
2. Java モニター (同期/待機/通知/通知すべて) は公平ではありません。Java 1.5 の同期プリミティブには通常、公平性を確保するためのパラメーターがあります。公平なバージョンではパフォーマンスが大幅に低下することに注意してください。通常は不公平なバージョンを使用する必要があります。統計的には、順序が厳密に強制されていなくても、すべてのスレッドに実行の機会が与えられます。
多くのスレッドがアクセスする公平なロックを使用するプログラムは、デフォルト設定を使用するプログラムよりも全体的なスループットが低くなる可能性があります (つまり、低速であることが多く、多くの場合非常に低速です)。ただし、ロックの公平性は、スレッド スケジューリングの公平性を保証するものではないことに注意してください。したがって、公正なロックを使用する多くのスレッドの 1 つが、他のアクティブなスレッドが進行しておらず、現在ロックを保持していない間に、複数回連続してそれを取得する可能性があります。また、時間制限のない tryLock メソッドは公平性の設定を尊重しないことに注意してください。他のスレッドが待機していても、ロックが使用可能であれば成功します。
http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/locks/ReentrantLock.html#ReentrantLock%28boolean%29