JAVA 死锁实例
2016-03-29 21:01
507 查看
public class Resource {
public static Object o1 = new Object();
public static Object o2 = new Object();
}
public class DeadLock1 extends Thread {
public void run() {
synchronized (Resource.o1) {
System.out.println("我获取了o1,并对o1加了锁");
try {
sleep(10);
} catch (InterruptedException e) {
}
synchronized (Resource.o2) {
}
System.out.println("我获取了o2,并对o2加了锁");
}
System.out.println("我运行完了,我要释放所有资源:o1和o2");
}
}
public class DeadLock2 extends Thread {
public void run() {
synchronized (Resource.o2) {
System.out.println("我获取了o2,并对o2加了锁");
try {
sleep(10);
} catch (InterruptedException e) {
}
synchronized (Resource.o1) {
System.out.println("我获取了o1,并对o1加了锁");
}
}
System.out.println("我运行完了,我要释放所有资源:o1和o2");
}
}
public class Main {
public static void main(String[] args) {
DeadLock1 deadLock1 = new DeadLock1();
DeadLock2 deadLock2 = new DeadLock2();
deadLock1.start();
deadLock2.start();
}
}
public static Object o1 = new Object();
public static Object o2 = new Object();
}
public class DeadLock1 extends Thread {
public void run() {
synchronized (Resource.o1) {
System.out.println("我获取了o1,并对o1加了锁");
try {
sleep(10);
} catch (InterruptedException e) {
}
synchronized (Resource.o2) {
}
System.out.println("我获取了o2,并对o2加了锁");
}
System.out.println("我运行完了,我要释放所有资源:o1和o2");
}
}
public class DeadLock2 extends Thread {
public void run() {
synchronized (Resource.o2) {
System.out.println("我获取了o2,并对o2加了锁");
try {
sleep(10);
} catch (InterruptedException e) {
}
synchronized (Resource.o1) {
System.out.println("我获取了o1,并对o1加了锁");
}
}
System.out.println("我运行完了,我要释放所有资源:o1和o2");
}
}
public class Main {
public static void main(String[] args) {
DeadLock1 deadLock1 = new DeadLock1();
DeadLock2 deadLock2 = new DeadLock2();
deadLock1.start();
deadLock2.start();
}
}
相关文章推荐
- 2016-03-29-Spring框架
- 我看过的最好最实用的String文章
- 深入理解 Java 虚拟机-类初始化
- 遭遇重创,一失足,回到"解放"前:项目文件全部为空,无法导入到eclipse中
- Myeclipse中文乱码问题
- 深入理解 Java 虚拟机-Java 内存区域与内存溢出
- java变量3
- Thrift 示例(包含自定义异常, 枚举, 传输Java Bean)
- 白话Spring(中级篇)---拦截器(上)
- Java基础知识强化之IO流笔记78:NIO之 FileChannel
- SE Springer小组之《Spring音乐播放器》可行性研究报告一、二(转载)
- 深入理解 Java 虚拟机-Java 代码编译和执行的整个过程
- eclipse 中maven编译出现问题-Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOM
- SSH图片上传
- java中List对象列表去重或取出以及排序
- 20145229吴姗珊两天小总结 《Java程序设计》第4周学习总结
- 深入理解 Java 虚拟机之走进Java
- Spring 控制反转
- 三个最简单的排序算法:插入、冒泡、选择
- Java编程手册-Collection框架(上)