java 锁机制
来源:互联网 发布:基金有什么软件 编辑:程序博客网 时间:2024/06/16 11:13
死锁是两个甚至多个线程被永久阻塞时的一种运行局面,这种局面的生成伴随着至少两个线程和两个或者多个资源。
线程以向第一个对象获取封锁这种方式运行。但是当它试着像第二个对象获取封锁时,它就会进入等待状态,因为它已经被另一个线程封锁住了。这样,在线程引起死锁的过程中,就形成了一个依赖于资源的循环。
为了分析一个死锁,关注下应用中的Java线程转存,可以使用VisualVM收集资料或者jstack应用程序产生线程转存。
避免死锁策略:
- 避免嵌套封锁:这是死锁最主要的原因的,如果你已经有一个资源了就要避免封锁另一个资源。如果你运行时只有一个对象封锁,那是几乎不可能出现一个死锁局面的。例如,这里是另一个运行中没有嵌套封锁的run()方法,而且程序运行没有死锁局面,运行得很成功。
- 只对有请求的进行封锁:你应当只想你要运行的资源获取封锁,比如在上述程序中我在封锁的完全的对象资源。但是如果我们只对它所属领域中的一个感兴趣,那我们应当封锁住那个特殊的领域而并非完全的对象。
- 避免无限期的等待:如果两个线程正在等待对象结束,无限期的使用线程加入,如果你的线程必须要等待另一个线程的结束,若是等待进程的结束加入最好准备最长时间。
0 0
- java锁机制Synchronized
- java锁机制Synchronized
- java锁机制Synchronized
- java锁机制Synchronized
- java锁机制Synchronized
- java锁机制Synchronized
- java锁机制Synchronized
- java的锁机制
- java锁机制Synchronized
- java锁机制Synchronized
- java锁机制Synchronized
- java锁机制Synchronized
- Java锁机制synchronized
- java 锁机制
- java的锁机制
- Java锁机制
- java的锁机制
- java锁机制
- linux笔记
- lock_type动态视图_V$LOCK,V$LOCKED_OBJECT
- LZMA C# SDK 子线程压缩与解压缩 Unity3d实例
- 通过JSON文件获取图片URL,下载并显示在布局中
- oracle&mysql的日志信息
- java 锁机制
- 1- mongoDB安装及基础
- 如何记忆Android模拟器中的快捷键
- 人生就是一个大项目
- Leetcode#13:romanToInt 暑假训练第一弹
- APIO2009 抢掠计划
- GDI
- How Can I Create Histogram Projection In Opencv ?
- 学习如何从源代码分析Android Sdk--LinearLayout