java小例子实现死锁
死锁问题用通俗的语言来描述就是: 要进入一个房间要开2扇门,A用钥匙1开了第一扇门,但没有第二把钥匙,而B拥有钥匙2,但却无法打开第一扇门.
用java代码来实现:不同的线程使用同一个类的对象,因此要共享该MyThread类的空间.
public class DeadLock {
public static void main(String[] args) {
new DeadLock().begin();
}
public void begin() {
MyThread mt = new MyThread();
Thread t1 = new Thread(mt, "mt1");
Thread t2 = new Thread(mt, "mt2");
t1.start();
t2.start();
}
class MyThread implements Runnable {
private Object key1 = new Object();
private Object key2 = new Object();
private boolean flag = true;
@Override
public void run() {
if (flag) {
flag = false;
synchronized (key1) {
System.out.println(Thread.currentThread().getName() + ":key1");
synchronized (key2) {
System.out.println(Thread.currentThread().getName() + ":key2");
}
}
} else {
synchronized (key2) {
System.out.println(Thread.currentThread().getName() + ":key2");
synchronized (key1) {
System.out.println(Thread.currentThread().getName() + ":key1");
}
}
}
}
}
}
- Ajax - JavaScript之实现私有属性、像C++和Java一样支持基于类的继承方法之例子
- Java 实现连接sql server 2000(JDBC数据库访问例子)
- 【JAVA基础】0013--------java实现的一个发送手机短信的小例子
- Java 死锁的实现 -Java学习笔记(28)
- java实现sftp的例子
- Java死锁例子
- JAVA实现查找替换文本文件内容的例子
- Java实现的文件Copy例子
- Java 实现连接sql server 2000(JDBC数据库访问例子)-2
- Java实现Mysql的jdbc连接例子
- 利用java实现的一个发送手机短信的小例子
- Java实现Mysql的jdbc连接例子
- 黑马程序员——java第十一、十二天:多线程(创建线程1-2、多线程同步代码、实现Runnable接口、安全死锁)
- java多线程发生死锁的一个例子
- java多线程死锁例子
- Java 实现连接sql server 2000(JDBC数据库访问例子)
- WEB项目按页面链接授权的实现(原理与Java例子)
- java实现简单XMPP发送消息和文件的简单例子
- JAVA动态代理实现的小例子
- java学习之路——小例子(实现输入年份,输出该年份的具体天数信息)