死锁原理: 两个线程相互等待对方释放同步监视器

例子程序:

 1 public class TestDeadLock implements Runnable {
 2
 3     public int flag = 1;
 4     static Object o1 = new Object(), o2 = new Object();
 5
 6     public void run() {
 7         if (flag == 1) {
 8             synchronized (o1) {
 9                 try {
10                     Thread.sleep(500);
11                 } catch (Exception e) {
12                     e.printStackTrace();
13                 }
14                 synchronized (o2) {
15                     System.out.println("1");
16                 }
17             }
18         }
19         if (flag == 0) {
20             synchronized (o2) {
21                 try {
22                     Thread.sleep(500);
23                 } catch (Exception e) {
24                     e.printStackTrace();
25                 }
26                 synchronized (o1) {
27                     System.out.println("0");
28                 }
29             }
30         }
31     }
32
33     public static void main(String[] args) {
34         TestDeadLock td1 = new TestDeadLock();
35         TestDeadLock td2 = new TestDeadLock();
36         td1.flag = 1;
37         td2.flag = 0;
38         Thread t1 = new Thread(td1);
39         Thread t2 = new Thread(td2);
40         t1.start();
41         t2.start();
42     }
43 }

转载于:https://www.cnblogs.com/Kingram/p/9048862.html

JAVA经典题--死锁案例相关推荐

  1. java经典题之冒泡排序

    Java面试中经常会出现一道比较简单但是做起来比较困难的题,那就是冒泡排序法,即对一个数组从小到大(或者从大到小)进行排序,并且将数组中的元素位置替换.如果数组比较少的情况下,可以利用简单的比较,然后 ...

  2. java经典题丨有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总对数为多少?

    兔子问题,习题练习: public class Rubbit {public static void main(String[] args) {Scanner sc = new Scanner(Sys ...

  3. 经典题:用Java打印空心菱形

    经典题:用Java打印空心菱形 本题是在打印空心金字塔的基础上进行的,不会的点击下面的链接: 经典题:用Java打印空心金字塔 (1)打印无底空心金字塔 输出如下: 开始运行... 请输入层数 6** ...

  4. JAVA经典算法50题(转)

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/51097928 JAVA经典算法50题 [程序1]   题目:古典问题:有一对兔子, ...

  5. java经典算法四十题

    java经典算法四十题 [程序9]题目:一个数如果恰好等于它的因子之和,这个数就称为 "完数 ".例如6=1+2+3.编程找出1000以内的所有完数. public class W ...

  6. java经典50题_JAVA经典算法50题(3)【面试+工作】

    原标题:JAVA经典算法50题(3)[面试+工作] JAVA经典算法50题(3)[面试+工作] [程序21] 题目:求1+2!+3!+...+20!的和. 1.程序分析:此程序只是把累加变成了累乘. ...

  7. java经典50道_50道经典的JAVA编程题(41-45)

    50道经典的JAVA编程题(41-45),苦逼的程序猿,晚上睡不着了编程吧~今天坚持做10道题!发现编程能是我快乐...O(∩_∩)O哈哈~能平静我烦乱的心,剩下5道题留到考试完了再做吧!该睡觉了.. ...

  8. java经典100例算法题_10道java经典算法题,每一题都能帮你提升java水平!

    JAVA经典算法题 [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析:兔子 ...

  9. java求最大公约数_10道java经典算法题,小白必备,每一题都能提升你的java能力...

    JAVA经典算法 跪求关注,祝关注我的人都:身体健康,财源广进,福如东海,寿比南山,早上贵子,从不掉发! 更多java资料可以私信我领取! [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每 ...

最新文章

  1. 服务器ping你可以ping通,你ping服务器ping不同的解决方案!!
  2. 【转图】从可乐到NIKE 经典logo的web2.0版
  3. 13.跨进程读写内存
  4. HDU3363_贪心
  5. mysql双主故障自动切换_MySQL主库高可用 -- 双主单活故障自动切换方案
  6. 带有毫秒 转换日期_【Java学习笔记(七)】之日期类的介绍
  7. Visual Studio Team Architect团队的敏捷开发 (第三部分)
  8. Js模拟select选择框,参照IE8样式
  9. 老男孩linux学习笔记第一课安装Linux
  10. 常见的思维模型:5W2H和2W1H
  11. 微信公众号订阅通知设置
  12. 数据分析5-银行客户风险评估实战
  13. windows 7 官方旗舰版
  14. sam音高修正_音高修正软件melodyne使用方法1中英文对照
  15. 史上最怪异的几大数据中心事故
  16. 基于Javaweb的问卷调查系统
  17. 【知识兔】Excel教程小技巧之常用快捷键汇总
  18. 云摆摊 | 手把手教你制作ESP8266物联网创意点阵时钟,女朋友看了都想要!
  19. 如何通俗的理解beam search?
  20. STF移动测试云平台搭建

热门文章

  1. Java中获取完整的url
  2. Today is weekend不是应该一定会输出吗
  3. DataReader不奇怪,该出手时就出手!
  4. ThreadPoolExecutor线程池 + Queue队列
  5. BZOJ5292 洛谷4457 LOJ2513:[BJOI2018]治疗之雨——题解
  6. 工程项目管理需要注意哪些问题
  7. OBJECT_ID()的使用方法
  8. 非IT人士的云栖酱油之行 (程序猿迷妹的云栖之行)
  9. Semantic-UI的React实现(二):CSS类构造模块 1
  10. golang实现常用数据结构