![[单项选择题] 以下关于对象锁的叙述,正确的是()。,第1张 [单项选择题] 以下关于对象锁的叙述,正确的是()。,第1张](/aiimages/%5B%E5%8D%95%E9%A1%B9%E9%80%89%E6%8B%A9%E9%A2%98%5D+%E4%BB%A5%E4%B8%8B%E5%85%B3%E4%BA%8E%E5%AF%B9%E8%B1%A1%E9%94%81%E7%9A%84%E5%8F%99%E8%BF%B0%EF%BC%8C%E6%AD%A3%E7%A1%AE%E7%9A%84%E6%98%AF%28%29%E3%80%82.png)
[单项选择题] 以下关于对象锁的叙述,正确的是( )。
A.正常使用对象锁时,对共享数据的读访问不一定要在临界区内,但写访问必须在临界区内
B.为了防止单个线程因为自己持有的锁而陷入死锁,Java规定对象不可以重复加锁
C.正常使用对象锁时,临界区内的共享数据必须是私有的
D.在Java中设有专门检测和预防死锁的机制,可供程序直接使用
正确答案:C
参考解析:在Java中,使用synchronized关键字标识临界区。Java平台将每个由synchronized语句设置的对象设置一个锁,称为对象锁,它是一种独占的排他锁,即同一时刻最多只能有一个线程获取该锁。为了能够正常地使用对象锁,对共享数据的所有访问都必须在临界区内,同时临界区的共享数据必须是私有的,确保只能通过对象的方法才能访问到。 为了防止单个线程因为自己持有的锁而陷入死锁,Java规定对象加锁可以重入,即使某个线程已经具有某对象的锁,仍然可以再次申请获得该锁。 在Java中没有专门检测和预防死锁的机制,需要由程序自行控制。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)