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

java多线程之线程死锁

2017-06-08 18:27 375 查看

恶魔之java多线程之线程死锁-简单易操作

代码示例

MyTest.java

package myUtil.myUtil;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* 线程死锁
* 四大条件:1线程互斥
*          2占用自然且不释放资源
*          3不强行剥夺资源
*          4资源的获取要首尾衔接
*/
public class MyTest{
private Object object1;
private Object object2;
public MyTest() {
object1 = 1;
object2 = 2;
}
private static final Logger logger = LoggerFactory
.getLogger(MyTest.class);

public static void main(String[] argv){
MyTest myTest = new MyTest();
new Thread(myTest.new Test1()).start();
new Thread(myTest.new Test2()).start();
}

class Test1 implements Runnable{
@Override
public void run() {
synchronized (object1) {
logger.info("Test1获取资源"+object1);
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (object2) {
logger.info("Test1获取资源"+object2);
}
}
}
}

class Test2 implements Runnable{

@Override
public void run() {
synchronized (object2) {
logger.info("Test2获取资源"+object2);
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (object1) {

4000
logger.info("Test2获取资源"+object1);
}
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: