java synchronized try lock