关于线程同步的一点心得

一 关于synchronized(this)同步代码块
当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,同一时间只能有一个进程执行该代码块。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。并且其他线程对于object中所有其他的synchronized(this)同步代码块的访问被阻塞。也就是说其他所有需要得到该实例对象(注意,是该实例对象)锁的线程都将被阻塞,一直到该线程释放该实例对象的锁后,才能执行。但是,在某个线程访问object的一个synchronized(this)同步代码块时,其他线程可以通过其他非synchronized的方法来访问该object访问该object中非synchronized(this)同步代码块的内容。

二 关于static synchronized的同步问题
由于用了static来修饰该方法,由static的知识可以知道,static是不用实例化对象就存在的,所以,说明该代码块无论是该对象的哪个实例调用,只要是一个程序中的,那么调用该块的时候,都将受到一个锁的限制,这个锁是类的锁,而不是对象的锁,同上一个概念相比所不一样的地方就是,如果两个线程对于不同的对象调用,那么相互之间不影响,而这里,不管你是哪个对象,调用该同步块的时候,都只有一个锁,一个程序中,只能允许一个进程执行,其他进程都将被阻塞。同时要注意的是,类锁与实例锁不是一个锁,也就是说,如果某线程得到了一个类锁,其他进程得到了该对象的实例锁子,两个线程并不相互影响。同实例锁一样,如果类锁被某线程得到,其他线程调用非同步块的内容,不会被阻塞。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值