多线程之——线程同步(三)

一、内建锁 (synchronized)

  • 同步代码块:
    使用synchronized作用于方法中,同一时刻只能有一个线程进入该代码块,方法内任是多线程;
           synchronized(this){
                //需要同步的代码块
             }
  • 同步方法:
    使用synchronized作用于方法头,同一时刻只能有一个线程进入该方法;
            public synchronized  void Method(){ }
  • 关于synchronized的说明:
    实际上,synchronized(this)非static的synchronized方法,只能防止多个线程同时执行同一个对象的同步代码块;
    synchronized 叫对象锁,锁的就是对象本身,即(this)。
  • 对象锁与全局锁
     synchronized默认为对象锁,锁的是当前对象而不是代码段;
    全局锁:锁的是真正的代码段,与对象无关。
            在同步代码段锁class对象:synchronized (myThread.Class)
            使用static synchronized 方法:     public static synchronized  void Method(){ }
       

当方法中有两个同步方法时,一个线程进入某一同步方法时,另一个线程无法进入。

二、Lock 锁

三、死锁 (解决:破坏环)
     
本质:共享资源的循环等待;
     对共享资源上锁,注意不要成环;

、生产与消费者模型:

  生产-消费者之间不直接通信,借助阻塞队列来通信。

 具体代码,之后更新。


     

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值