lock과 lockInterruptibly의 대기 중 interrupt 결과

둘 다 WAITING일 수 있지만 취소 요청에 대한 계약이 다르다.

lock()

interrupt 순간 다시 대기하고 획득 후 flag를 보존할 수 있다

not cancelled

lockInterruptibly()

획득 전에 InterruptedException으로 queue를 떠난다

cancelled
소유 여부exception 경로에서는 unlock을 호출하지 않는다

핵심: interrupt를 보냈다는 사실만으로 plain lock waiter가 종료되었다고 판단하지 않는다.