chapter 2 - dining philosopher implementations with intrinsic lock and reentrant lock, concurrent sorted list benchmarking hand over hand locking vs single lock