码迷,mamicode.com
首页 > 编程语言 > 详细

线程的死锁问题

时间:2019-11-25 15:28:20      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:提示   状态   自己   同步方法   资源   启动   sync   定义   nbsp   

死锁:

  不同的线程分别占用对方需要的同步资源不放弃,都在等待对方放弃自己需要的同步资源,就形成了线程的死锁

  出现死锁后,不会出现异常,不会出现提示,只是所有的线程都处于阻塞状态,无法继续

解决方法

  专门的算法 原则

  尽量减少同步资源的定义

  尽量避免嵌套同步

 

解决线程安全问题的方式三:Lock锁  JDK5.0新增

实例化ReentranLock

ReentrantLock(true) 先进先出

调用lock()

调用unlock()

 

synchronized与Lock的异同

不同:synchronized机制在执行完相应的同步代码块以后,自动的释放同步监视器

  Lock需要手动的启动同步, 手动关闭

Lock是显式锁(手动开启和关闭锁),synchronized是隐式锁,出了作用域自动释放

Lock只有代码块锁,synchronized有代码块锁和方法锁

使用Lock锁,JVM将花费较少的时间来调度线程,性能更好。 具有更好的扩展性(提供更多的子类)

优先使用顺序 

Lock  同步代码块 同步方法

 

线程的死锁问题

标签:提示   状态   自己   同步方法   资源   启动   sync   定义   nbsp   

原文地址:https://www.cnblogs.com/ergePython/p/11927672.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!