add java reentrant lock