/*
*死锁产生有2个原因:
*1,资源竞争
*2,进程间的推进顺序非法
*
*程序模拟的是第一个情况
*/
public class TestDeadLock implements Runnable {
public int flag = 1;
static Object o1 = new Object();
static Object o2 = new Object();
public void run() {
System.out.println("flag=" + flag);
if(flag == 1) {
synchronized(o1) {
try {
Thread.sleep(500);
} catch(InterruptedException e) {
e.printStackTrace();
}
synchronized(o2) {
System.out.println("1");
}
}
}
if(flag == 0) {
synchronized(o2) {
try {
Thread.sleep(500);
} catch(InterruptedException e) {
e.printStackTrace();
}
synchronized(o1) {
System.out.println("0");
}
}
}
}
public static void main(String[] args) {
TestDeadLock td1 = new TestDeadLock();
TestDeadLock td2 = new TestDeadLock();
td1.flag = 1;//用flag区分不同的线程
td2.flag = 0;
Thread t1 = new Thread(td1);
Thread t2 = new Thread(td2);
t1.start();
t2.start();
}
}
分享到:
相关推荐
故另外开启一个线程,用于接受客户端的socket消息。服务器在收到一个socket连接之后,把该socket保存到队列中,并对队列中的每个socket开启各自的读写线程。测试可以在不同控制台运行server和client,服务器接收消息...
同时执行多线程例程同时执行多线程例程同时执行多线程例程
java多线程经典例程
易语言多线程的运用例程源码,多线程的运用例程,开始,线程运作,销毁全部线程,线程全部暂停,线程全部恢复,取指定内容,挂起线程,恢复线程,创建线程,销毁线程
本资源是关于明华读卡器的Java例程,真实可用。自己做过测试。
易语言多线程许可证基本例程源码,多线程许可证基本例程,子程序1
简单JAVA例程(绝对新手实例)认识JAVA。简单的JAVA程序!
简单多线程编程入门,可以帮助你实现第一个多线程程序
一个非常简单的Java程序 计算长方体的表面积和体积
VC多线程例程七及图解文档(线程间通信) 含源源码
多线程编程之一——问题提出 相关例程源码
java初学者必看,关于监控器,jdbc,绘图方面操作,外加自己写的一个选修课作业
10个学习vc多线程的例程 vc多线程学习的例程,大家一起分享吧
vc多线程例程.doc的文档,亲测可用。
多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理...这里提供简单的多线程例程便于移植。
易语言多线程例程源码,多线程例程,子程序1
完整版多线程例程-黑客帝国特效.rar
JAVA的基础例程,一些关于java的简单程序代码与文档,有助于JAVA基础薄弱的人快速提高,而且也有助于一般的开卷考试课哦,其中一定有你需要的