如果某个线程调用一个被同步block去访问数据k时,synchronized可以保证这个被同步的block 完成前其他线程不能调用任何被同步的block去访问k.
其实正常返回或是非预期的异常情况都会使线程放弃线程锁.