标签:提示 状态 自己 同步方法 资源 启动 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