java中锁的含义

今天做到了一个题,发现自己对java的锁理解的不太够。觉得这个问题可能有的人也会有理解上的失误。

 What is true while A is in a synchronized (list) { ... } block?
– It owns the lock on list
– It does not own the lock on list
– No other thread can use observers of list
– No other thread can use mutators of list
– No other thread can acquire the lock on list
– No other thread can acquire locks on elements in list

这个选择什么呢?是第一个和第五个!

以前我理解锁的概念呢,是在不同的线程中只能有一个线程访问到这个锁对应的对象,但是在研究了一些代码的使用时,发现并不是这样的。锁的概念呢,是说同时只能有一个线程获取到这个锁,其他的线程要等待这个线程将锁释放后才可以获取到这个锁,其实“锁”从这个意义上来说,锁住的不是要访问的对象,而是代码。假如有多个线程要访问一个对象,有一个线程获取到了这个对象的锁,但是其他的对象仍然可以访问这个对象并进行修改,只是获取不到锁,完全可以不使用锁来进行修改。

所以说现在明白为什么是第一个和第五个了吧,其他的线程上的observers、mutators等仍然可以访问list,不获取锁就好了啊。并且list的锁和里面对象的锁完全不同,其他线程可以获取list里面对象的锁。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值