您的位置:首页 > 编程语言 > Java开发

Java 介绍避免死锁的几种常见方法

2017-08-15 13:57 176 查看
产生死锁的场景代码:

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() {

@SuppressWarnings("static-access")
@Override
public void run() {

synchronized(A){
try {
Thread.currentThread().sleep(2000);
} catch (InterruptedException e) {

e.printStackTrace();
}
synchronized(B){
System.out.println("1");
}
}
}
});
Thread t2 =new Thread(new Runnable() {

@Override
public void run() {

synchronized(B){
synchronized (A) {
System.out.println("2");
}
}
}
});
t1.start();
t2.start();
}

}


介绍避免死锁的几种常见方法:

1.避免一个线程同时获取多个锁。

2.避免一个线程在锁内同时占用多个资源,尽量保证每个锁只占用一个资源。

3.尝试使用定时锁,使用locak.tryLock(timeout)来代替使用内部锁机制

4.对于数据库锁,加锁和解锁必须在一个数据库连接里,否则会出现解锁失败的情况。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java string class thread