多线程学习笔记1

  1.     sleep()方法阻塞当前线程,但是不释放锁资源
    
  2.     当执行完synchronized(lock){}代码块中的内容后,自动释放锁资源
    
  3.     wait()方法阻塞当前线程,且释放锁资源,且只能被持有相同锁的其他线程唤醒。否则一直阻塞。
    
  4. notify()方法,严格按照FIFO模式,去持有相同锁的线程队列中唤醒一个线程。这有可能导致死锁。例子就是:当有2个线程的生产者,2个线程的消费者时,会出现死锁。具体:生产者1,进行生产后,进入阻塞,生产者2,判断已经生产过,进入阻塞。消费者1 进行消费后,唤醒生产者1,消费者2,判断已经消费进入阻塞。当生产者1生产后,唤醒生产者2,然后阻塞。生产者2判断已经生产过,直接进入阻塞,然后4个线程就全都阻塞了,造成了死锁,原因是没有线程能再被激活。
    
  5. 所以多线程时使用notifyAll()方法,能够避免出现上述中的死锁,notifyAll()方法唤醒拥有同一锁对象的所有线程。
    
  6. join()方法保证调用该方法的进程执行结束后,之后的其他线程才可以进行工作
    
  7. ThreadGroup.enumerate(Thread[] ts)方法只是复制当前线程组及其子组的引用,而不是深层拷贝,意思就是说,调用该方法后,操纵ts的成员,其实就是在操纵ThreadGroup的线程单元
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值