add lock interface
add reentrant lock and blocking wait strategy