JAVA 死锁例子
来源:互联网 发布:网络名词 编辑:程序博客网 时间:2024/06/08 10:24
public class Test {
private static final Object o1 = new Object();
private static final Object o2 = new Object();
/**
* @param args
*/
public static void main(String[] args) {
new Thread() {
public void run() {
while (true) {
System.out.println("---线程1执行了");
synchronized (o1) {
System.out.println("+++++线程1锁住了01");
synchronized (o2) {
System.out.println("**********线程1锁住了02");
}
}
}
};
}.start();
new Thread() {
public void run() {
while (true) {
System.out.println("---线程2执行了");
synchronized (o2) {
System.out.println("++++++线程2锁住了02");
synchronized (o1) {
System.out.println("***********线程2锁住了01");
}
}
}
};
}.start();
}
private static final Object o1 = new Object();
private static final Object o2 = new Object();
/**
* @param args
*/
public static void main(String[] args) {
new Thread() {
public void run() {
while (true) {
System.out.println("---线程1执行了");
synchronized (o1) {
System.out.println("+++++线程1锁住了01");
synchronized (o2) {
System.out.println("**********线程1锁住了02");
}
}
}
};
}.start();
new Thread() {
public void run() {
while (true) {
System.out.println("---线程2执行了");
synchronized (o2) {
System.out.println("++++++线程2锁住了02");
synchronized (o1) {
System.out.println("***********线程2锁住了01");
}
}
}
};
}.start();
}
}
////////////////////////////////////////////////////////////////////////////////////////////
结果
////////////////////////////////////////////////////////////////////////////////////////////
---线程1执行了
---线程2执行了
+++++线程1锁住了01
++++++线程2锁住了02
当然上面的结果是理论
也会出现 02 可以打开的情况 或者 01
这是因为两个线程并行执行 看看那个占用 CPU 占得快
占得快的就可以开个锁
理论是双方都无法在锁住对方 自己运行理解即可
---线程1执行了
+++++线程1锁住了01
**********线程1锁住了02
---线程1执行了
---线程2执行了
+++++线程1锁住了01
++++++线程2锁住了02
0 0
- java线程死锁例子
- Java死锁例子
- java死锁的例子
- java多线程死锁例子
- java死锁例子详解
- JAVA 死锁例子
- java产生死锁例子
- Java 死锁的例子
- Java死锁的例子
- Java死锁例子
- java死锁例子
- java 死锁例子
- Java 死锁例子
- java小例子实现死锁
- Java多线程死锁的例子
- java死锁的一个例子
- Java多线程探究-死锁例子
- Java死锁的简单例子
- [IOS]SQLite3常用语句
- Python---class and iter
- 【LVL1_6_c】 指针数组 数组指针 的区别(仅仅是初步学习理解)
- OC基础----查看苹果帮助文档
- Python---file
- JAVA 死锁例子
- 流程控制与数组
- Python---http
- MVC5+EasyUI企业开发框架系列(01)—总体介绍
- 正则表达式: 以英文字母开头,只能包含英文字母、数字、下划线
- 浅谈 EventBus
- C++输出的精度控制
- Python---xml
- OpenGL基于帧缓存FBO的离屏渲染