一个简单的死锁示例
来源:互联网 发布:数据库三个范式 编辑:程序博客网 时间:2024/05/17 04:54
package cn.com.io.threadDemo.ThreadSyn;
/**
* 通过两个属性值创建死锁
* 本程序通过两个线程各自锁定一个属性值,这样两个线程都无法结束,造成死锁
*/
public class ThreadSyn2 implements Runnable{
private static Object obj1=new Object();
private static Object obj2=new Object(); //obj1和obj2是线程共享的,嵌套会引起死锁!
/**
* @param args
*/
public static void main(String[] args) {
ThreadSyn2 ts1=new ThreadSyn2();
ThreadSyn2 ts2=new ThreadSyn2();
Thread t1=new Thread(ts1);//线程1
Thread t2=new Thread(ts2);//线程2
t1.setName("theOne");
t2.setName("theTwo");
t1.start();
t2.start();
}
public void run() {
String name=Thread.currentThread().getName();
if(name.equals("theOne"))
{
method1(name);
}
else
{
method2(name);
}
}
//线程1的方法锁定obj1,线程2就无法完成
private void method1(String name) {
System.out.println(name);
synchronized(obj1){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized(obj2){
System.out.println(obj2);
}
}
}
//线程1的方法锁定obj2,线程1就无法完成
private void method2(String name) {
System.out.println(name);
synchronized(obj2){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized(obj1){
System.out.println(obj1);
}
}
}
}
- 一个简单的死锁示例
- 一个简单的Java死锁示例
- 一个简单的java死锁示例
- 【代码示例】 一个简单的Java死锁
- Java:一个简单的死锁示例
- 一个简单的死锁
- 一个简单的死锁例子
- 一个死锁的简单例子
- 一个简单的死锁例子
- 一个死锁的简单例子
- 一个简单死锁的例子
- 一个简单的死锁程序
- 一个简单的死锁例子
- 死锁,Java简单示例
- 一个简单的C#死锁程序
- java写一个死锁的简单例子
- Java一个简单的死锁程序
- Java一个简单的死锁例子
- Android 调试桥
- OpenGL混色
- 数据库的备份与恢复(oracle 11g)
- Android四大基本组件介绍与生命周期
- JAVA中的栈和堆有什么异同点?
- 一个简单的死锁示例
- #if与if
- 泛型&泛型的通配符使用
- 反射与类加载器
- 异步编程(Asynchronous Programming)
- php中通过递归实现删除目录下的所有文件。
- Bell数+中国剩余定理
- 基于Tornado的web,数据的预先加载
- OpenVPN解密(一)