ReentrantLock
タイムアウト付き取得(tryLock)、公平性ポリシー、複数のConditionを扱えるJavaの明示的ロック。