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

Java线程死锁

时间:2017-08-09 15:30:26      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:war   一个   ace   public   bsp   对象   thread   问题   warnings   

 Java多线程使用synchronized 锁时,可能会出现死锁;死锁会导致两个线程无限等待,致使程序异常。因此使用synchronized 关键字时注意死锁的问题。

 

笔者在第一次运行程序的时候属性 A=“a”、B=“a”,并没有引起死锁的问题;原因很简单,这时A 和 B的地址是一样的,synchronized 认为是同一个对象资源,不会对对象A 和 B同时加锁。

 

引起死锁的例子: 

public class DeadLock {

 private String A = "a";
private String B = "b";
@SuppressWarnings("static-access")
public void deadLock(){
Thread thread1 = new Thread(new Runnable(){
@Override
public void run() {
System.out.println("thread1-start");
synchronized (A) {
System.out.println("1" + A);
try {
Thread.currentThread().sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
synchronized (B){
System.out.println("2" + B);
}
}
System.out.println("thread1-end");
}
});
Thread thread2 = new Thread(new Runnable(){
@Override
public void run() {
System.out.println("thread2-start");
synchronized (B) {
System.out.println("3" + B);
synchronized (A){
System.out.println("4" + A);
}
}
System.out.println("thread2-end");
}
});
thread1.start();
thread2.start();
}
public static void main(String[] args){
    
new DeadLock().deadLock();
}
}

Java线程死锁

标签:war   一个   ace   public   bsp   对象   thread   问题   warnings   

原文地址:http://www.cnblogs.com/lyxb/p/7325165.html

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