以下关于对象锁的叙述,正确的是(  )。

admin2012-12-13  21

问题 以下关于对象锁的叙述,正确的是(  )。

选项 A、正常使用对象锁时,对共享数据的读访问不一定要在临界区内,但写访问必须在临界区内
B、为了防止单个线程因为自己持有的锁而陷入死锁,Java规定对象不可以重复加锁
C、正常使用对象锁时,临界区内的共享数据必须是私有的
D、在Java中设有专门检测和预防死锁的机制,可供程序直接使用

答案C

解析 在Java中,使用synchronized关键字标识临界区。Java平台将每个由synchronized语句设置的对象设置一个锁,称为对象锁,它是一种独占的排他锁,即同一时刻最多只能有一个线程获取该锁。为了能够正常地使用对象锁,对共享数据的所有访问都必须在临界区内,同时临界区的共享数据必须是私有的,确保只能通过对象的方法才能访问到。
为了防止单个线程因为自己持有的锁而陷入死锁,Java规定对象加锁可以重入,即使某个线程已经具有某对象的锁,仍然可以再次申请获得该锁。
在Java中没有专门检测和预防死锁的机制,需要由程序自行控制。
转载请注明原文地址:https://kaotiyun.com/show/sD2p777K
0

最新回复(0)