Java代码 死锁
来源:互联网 发布:ubuntu vsftpd安装 编辑:程序博客网 时间:2024/06/01 10:05
锁是一个非常有用的工具,运用场景非常多。而且易于理解,下面代码可能引起死锁,使线程t1和线程t2互相等待对方放锁。
/**
* Created by 陈晓阳 on 2017/9/9.
*/
public class DeadLockDemo {
private static String A=”A”;
private static String B=”B”;
public static void main(String[] args){
new DeadLockDemo().deadLock();
}
private void deadLock(){
Thread t1=new Thread(new Runnable() {
@Override
public void run() {
synchronized(A){
try {
Thread.currentThread().sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (B){
System.out.print(“1”);
}
}
}
});
Thread t2=new Thread(new Runnable() {
@Override
public void run() {
synchronized (B){
synchronized (A){
System.out.println(“2”);
}
}
}
});
//开启线程
t1.start();
// 开启线程2
t2.start();
}
}
现在我们介绍避免死锁的几个常见方法。
1 避免一个线程同时获取多个锁。
2 避免一个线程在锁内同时暂用多个资源,尽量保证每个所只占用一个资源。
3 尝试使用定时锁,使用 lock.tryLock(timeout) 来替代使用内部锁机制。
4 对于数据库锁,加锁和解锁必须在一个数据库连接里,否则会出现解锁失败的情况。
- 产生死锁代码 - Java
- java死锁代码示例
- Java死锁实例代码
- java 线程死锁代码
- java编写死锁代码
- java死锁代码
- JAVA死锁代码实例
- Java代码 死锁
- Java死锁代码示例
- 死锁问题的代码(JAVA)
- 用java代码解释死锁
- java代码--线程的死锁
- java 死锁问题 代码实现
- Java代码模拟死锁 多线程
- 用java代码解释死锁现象
- 【代码示例】 一个简单的Java死锁
- java代码死锁导致事务无法提交
- JAVA最直观的死锁代码
- TLS/SSL 协议详解 (26) https访问告警问题总结
- 前端01
- 跨域总结
- 最优二叉搜索树问题
- 圣杯布局 和 双飞翼布局 以及 全局布局的方式
- Java代码 死锁
- JVM内存区域详解
- proxool详细配置
- 听说2017你想写前端?
- mac运行lomboz提示unable to locate its companion shared library错误
- 框架学习的链接
- IDEA破解 2017 IDEA license server 激活
- 我丑我多读书还不行吗(每月更新)
- 稀疏矩阵的存储以及转置、加法、乘法操作实现