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!");
}
}
}

}

java(jdk8)死锁案例的更多相关文章

  1. java JDK8 学习笔记——助教学习博客汇总

    java JDK8 学习笔记——助教学习博客汇总 1-6章 (by肖昱) Java学习笔记第一章——Java平台概论 Java学习笔记第二章——从JDK到IDEJava学习笔记第三章——基础语法Jav ...

  2. java JDK8 学习笔记——第16章 整合数据库

    第十六章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API中的接口会有数据库厂商操作,称为JDBC驱动程 ...

  3. MySQL死锁案例分析与解决方案

    MySQL死锁案例分析与解决方案 现象: 数据库查询: SQL语句分析:  mysql. 并发delete同一行记录,偶发死锁.   delete from x_table where id=?   ...

  4. Java 多线程 死锁 隐性死锁 数据竞争 恶性数据竞争 错误解决深入分析 全方向举例

    在几乎所有编程语言中,由于多线程引发的错误都有着难以再现的特点,程序的死锁或其它多线程错误可能只在某些特殊的情形下才出现,或在不同的VM上运行同一个程序时错误表现不同.因此,在编写多线程程序时,事先认 ...

  5. 如何分析Java虚拟机死锁

    Thread Dump and Concurrency Locks Thread dumps are very useful for diagnosing synchronization relate ...

  6. Java线程死锁查看分析方法

    如何查看是否有Java线程死锁?下面介绍两种方法. 一.Jconsole        Jconsole是JDK自带的图形化界面工具,使用JDK给我们的的工具JConsole,可以通过打开cmd然后输 ...

  7. java 多线程死锁

    死锁案例: package com.test; public class DealThread implements Runnable { public String username; public ...

  8. java的死锁学习

    学习java的死锁写的代码 也是看书上的然后自己敲了一个 <span style="font-size:18px;">package synchronization.j ...

  9. java 线程死锁的检测

    java 线程死锁的检测   例子程序: import java.util.concurrent.CountDownLatch; import java.util.concurrent.Executo ...

随机推荐

  1. Stream之filter、distinct、skip、map、flatMap、match、find、reduce

    一.Stream之filter.distinct.skip: package com.cy.java8; import java.util.Arrays; import java.util.List; ...

  2. lambda一些查询语句

    <!--得分数据结构-->1 <Score> <studentid>1</studentid> <courseid>1</course ...

  3. QA的工作职责是什么?

    目前不知道,后续一点一点查资料补充吧 QA不管做什么的类型的测试,最基础的功能测试,需要搭建测试环境:进阶部分的性能压力测试,对搭建环境的要求更高:接口功能测试,搭建测试环境,和功能测试的差不多: 测 ...

  4. 【windows】windows安全基础

    windows安全基础 安全主体 security principal 是可以进行身份验证的实体. 哪个安全主体在要求访问?这个维度可以是用户,计算机和进程.一旦确认以后,系统就会发放SID. 例子: ...

  5. java创建多线程实现并行计算任务处理

    1.直接上代码一看明白: package multithreadingTest; class fblib extends Thread{ public static Integer fb(Intege ...

  6. oracle中与mysql中的命令 show databases, show tables, desc table类似的命令集

    1 怎样执行一个sql脚本文件,这个脚本文件写了一系列的sql语句集,比如sql.sql 放在D:\MyEclipse 8.6\Workspaces\OASystem\WebRoot\sql.sql下 ...

  7. 第五周实验报告&学习总结

    实验三 String类的应用 实验目的 掌握类String类的使用: 学会使用JDK帮助文档: 实验内容 1.已知字符串:"this is a test of java".按要求执 ...

  8. ES6生成器与迭代器

    ES6迭代器的一个例子 function run(taskDef) { var task = taskDef(); var result = task.next(); // 递归执行迭代 functi ...

  9. Docker 镜像的常用操作

    镜像作为 Docker 三大核心概念中,最重要的一个关键词,它有很多操作,是您想学习容器技术不得不掌握的.本文将带您一步一步,图文并重,上手操作来学习它. 目录 一 Docker 下载镜像 1.1 下 ...

  10. 100行代码撸完SpringIOC容器

    用过Spring框架的人一定都知道Spring的依赖注入控制反转;通俗的讲就是负责实例化对象 和 管理对象间的依赖 实现解耦. 我们来对比两段代码: UserController{ UserServi ...