黑马程序员技术交流社区
标题:
死锁是什么样的?
[打印本页]
作者:
hxwo211314
时间:
2014-7-8 23:14
标题:
死锁是什么样的?
死锁是什么样的?
作者:
Be_myself
时间:
2014-7-8 23:26
就是两个线程, 你拿着我的锁不给我, 我拿着你的索不给你, 这样咱们都别开门了
作者:
晴儿
时间:
2014-7-9 12:31
所谓死锁: 是指两个或两个以上的线程在执行过程中,因争夺资源而造成的一种互相等待的现象。
作者:
嗅ㄨiaǒ孑
时间:
2014-7-9 12:48
互相争夺资源 导致两者都进行不下去
作者:
lancerjs
时间:
2014-7-9 16:17
本帖最后由 lancerjs 于 2014-7-9 16:21 编辑
/*
* 死锁: 多个线程之间,相互访问
*/
public class LockDemo {
public static void main(String[] args) {
//创建2个线程对象
MyLock m1 = new MyLock();
MyLock m2 = new MyLock();
//启动线程
m1.start();
m2.start();
}
}
复制代码
public class MyLock extends Thread {
private int x = 0;
@Override
public void run() {
//m1,m2
while(true){
//m1,m2
if (x % 2 == 0) {
//第一个人 m1
synchronized (MeLock.objA) {
System.out.println("objA--(if)");
//模拟抢第二个人的筷子
synchronized (MeLock.objB) {
System.out.println("objB---(if)");
}
}
} else {
//另一个人
synchronized (MeLock.objB) {
System.out.println("objB---(else)");
//原来的第一个人 又想吃
//模拟抢第一个人的筷子
synchronized (MeLock.objA) {
System.out.println("objA---(else)");
}
}
}
x++;
}
}
}
复制代码
/*
* 锁对象
*/
public class MeLock {
public static Object objA = new Object();
public static Object objB = new Object();
}
复制代码
死锁的例子
作者:
醉、倾鯎
时间:
2014-7-9 16:21
a b两个锁嵌套在两个方法中,第一个方法中a锁嵌套b锁,第二个方法中b锁嵌套a锁,
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2