java(jdk8)死锁案例
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!");
}
}
}
}
最新文章
- 利用SQl对数据库实行数据拆分与组合
- IT 外包中的甲方乙方,德国人,美国人,印度人和日本人印象杂谈
- 描述Linux系统开机到登陆界面的启动过程(计时2分钟)
- HDU1102--最小生成树
- 【转载】两军问题与Paxos算法 &; 动画讲解Paxos算法
- 高效的Nginx
- 【转】调整mac电脑鼠标移动速度
- tlplayer for ios V1.0
- php 实现简单的登录
- PHP版本替换, phpinfo和php -v显示版本信息不一致
- LFYZ-OJ ID: 1024 火车站
- C语言数据结构_严蔚敏+吴伟民 课本源码
- 【转】【WPF】WPF中的Button的MouseDown事件不触发问题
- python一个简单的打包例子
- [CF718C] Sasha and Array
- 如何自动播放光盘、解决win7电脑不能播放光盘
- jmeter SMTP Sampler取样器发送测试结果邮件
- PHP 5.2、5.3、5.4、5.5、5.6 对比以及功能详解
- python 实现结构体
- 老美的zxing和日本的qrcode哪个好?
热门文章
- Delphi XE2 之 FireMonkey 入门(34) - 控件基础: TFmxObject: 克隆对象
- Jmeter接口测试系列之判断测试结果
- 6.824 Lab 3: Fault-tolerant Key/Value Service 3B
- spring(一) IOC 控制反转 、DI 依赖注入
- 如何用katalon录制回放一个web UI测试—— katalon学习笔记(四)
- 25. Reverse Nodes in k-Group[H]k个一组翻转链表
- 应用安全 - CMS - PHPCMS漏洞汇总
- 【Linux开发】全面的framebuffer详解
- itchat监听微信撤回消息
- Linux系统常用命令之top