package testSynchorized;

public class SynchronizedDeadLockTest {
static Object src1 = new Object();
static Object src2 = new Object();

public static void main(String[] args) {
Thread t1 = new Thread(new DeadARunnable(), "t1");
Thread t2 = new Thread(new DeadBRunnable(), "t2");
t1.start();
t2.start();
}
}

class DeadARunnable implements Runnable {
@Override
public void run() {
synchronized (SynchronizedDeadLockTest.src1) {
try {
System.out.println(Thread.currentThread().getName() + " get src1 ing!");
Thread.sleep(500);
System.out.println(Thread.currentThread().getName() + " after sleep 500ms!");
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + " need src2 and waiting!");
/**
* Thread t2 try get source src2 when locked source src1
*/
synchronized (SynchronizedDeadLockTest.src2) {
System.out.println(Thread.currentThread().getName() + " get src2 ing!");
}
}
}
}

class DeadBRunnable implements Runnable {
@Override
public void run() {
synchronized (SynchronizedDeadLockTest.src2) {
try {
System.out.println(Thread.currentThread().getName() + " get src2 ing!");
Thread.sleep(500);
System.out.println(Thread.currentThread().getName() + " after sleep 500ms!");
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + " need src1 and waiting!");
/**
* Thread t1 try get source src1 when locked source src2
*/
synchronized (SynchronizedDeadLockTest.src1) {
System.out.println(Thread.currentThread().getName() + " get src1 ing!");
}
}
}

}

最新文章

  1. 利用SQl对数据库实行数据拆分与组合
  2. IT 外包中的甲方乙方,德国人,美国人,印度人和日本人印象杂谈
  3. 描述Linux系统开机到登陆界面的启动过程(计时2分钟)
  4. HDU1102--最小生成树
  5. 【转载】两军问题与Paxos算法 & 动画讲解Paxos算法
  6. 高效的Nginx
  7. 【转】调整mac电脑鼠标移动速度
  8. tlplayer for ios V1.0
  9. php 实现简单的登录
  10. PHP版本替换, phpinfo和php -v显示版本信息不一致
  11. LFYZ-OJ ID: 1024 火车站
  12. C语言数据结构_严蔚敏+吴伟民 课本源码
  13. 【转】【WPF】WPF中的Button的MouseDown事件不触发问题
  14. python一个简单的打包例子
  15. [CF718C] Sasha and Array
  16. 如何自动播放光盘、解决win7电脑不能播放光盘
  17. jmeter SMTP Sampler取样器发送测试结果邮件
  18. PHP 5.2、5.3、5.4、5.5、5.6 对比以及功能详解
  19. python 实现结构体
  20. 老美的zxing和日本的qrcode哪个好?

热门文章

  1. Delphi XE2 之 FireMonkey 入门(34) - 控件基础: TFmxObject: 克隆对象
  2. Jmeter接口测试系列之判断测试结果
  3. 6.824 Lab 3: Fault-tolerant Key/Value Service 3B
  4. spring(一) IOC 控制反转 、DI 依赖注入
  5. 如何用katalon录制回放一个web UI测试—— katalon学习笔记(四)
  6. 25. Reverse Nodes in k-Group[H]k个一组翻转链表
  7. 应用安全 - CMS - PHPCMS漏洞汇总
  8. 【Linux开发】全面的framebuffer详解
  9. itchat监听微信撤回消息
  10. Linux系统常用命令之top