假设多个线程同时对同一个 `BankAccount` 对象进行存款和取款操作,其中 `deposit(int amount)` 和 `withdraw(int amount)` 方法都使用了 `synchronized` 关键字修饰整个方法。如果线程 T1 执行 `deposit(100)` 并进入该方法,线程 T2 尝试执行 `withdraw(50)`,在T1的存款操作尚未完成时,以下哪种情况**最准确地**描述了T2的行为?
答案解析
A选项错误,`synchronized`关键字修饰方法时,是对整个方法加锁,故T2会被阻塞等待。B选项正确,由于`deposit`和`withdraw`方法都使用`synchronized`修饰,并且操作的是同一个对象实例,因此T2在T1持有对象锁时会被阻塞,直到T1执行完毕并释放锁。C选项错误,`synchronized`保证了操作的互斥性,线程不会随机执行。D选项错误,`synchronized`的阻塞等待不是基于超时机制,而是直到锁被释放。
正确答案:B