第15天0313JavaSE 线程同步

  • 线程同步
    • 如果涉及到两个或者多个线程操作同一个资源时,有可产生问题。
    • 同步是指如果有多个线程操作同一个资源,需要等到一个线程结束对资源的操作之后,下个线程才能操作,要始终保证在同一时刻只能有一个线程操作这个资源。
      • 注意:所谓操作,是指至少有一个线程修改或者删除资源。如果多个线程只是读同一个资源,谁也不改,则不需要同步。
    • 线程同步
      • 使用synchronized关键字来同步,主要有两种方式:
        • synchronized(obj) {
          • //代码块
        • }
      • synchronized修饰一个方法,表示该方法在同一时刻只能被一个线程来调用。
        • synchronized 加在权限修饰符与返回值之间
      • 两种方法的优缺点
        • 修饰方法:优点是可以明确的知道哪些方法是同步方法,缺点是如果只是方法体中一小部分代码需要同步,那其他不需要同步的代码也被同步了。
        • 修饰代码块:优点只针对需要同步的代码块进行锁定,缺点是不能知道哪些方法是同步方法。
    • wait notify与notifyAll
      • wait() 使当前线程进入堵塞状态,前提是获得锁,一般配合synchronized使用
      • notify() 唤醒一个锁对象上的等待的线程,并执行。
      • notifyAll() 唤醒锁对象上的所有等待的线程,并执行。
    • join方法
      • 一个线程等待另一个线程执行结束,可以使用join方法
        • 在线程A中使用另一个线程对象b.join(),表示线程A执行到该行代码时,开始等待,等待到线程b执行完成然后才继续执行A线程。
    • 死锁 两个或者多个线程都在等待对方的锁对象,造成了死锁状态。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值