void function ( Object arg0 , Object arg1 , int arg2 ) { Object loc0 ; synchronized ( arg0 ) { synchronized ( arg0 ) { if ( arg2 == 0 ) { synchronized ( arg0 ) { loc0 = arg1 ; } } else { loc0 = arg0 ; } } } doNothing ( loc0 ) ; }
lock the monitor two or three times , and make use of the locked or unlocked object . concode_field_sep PlaceHolder placeHolder concode_field_sep void doNothing concode_elem_sep void twoPath concode_elem_sep void constantLock concode_elem_sep void notNested concode_elem_sep void main concode_elem_sep void nestedMayThrow concode_elem_sep void notExcessiveNesting concode_elem_sep void recursiveSync