/*** @author 杨宁*死锁问题:*创建两个线程或多个线程他们共享两个或多个同一个对象(一个对象就是一把锁)*两个线程在执行时各自占用对方的对象锁,等待对方归还各自的所需的锁,从而进入一种僵持状态*/
public class Sisuo {public static void main(String[] args) {One one = new One();Two two = new Two();Thread t1=new Thread(new A(one,two));Thread t2=new Thread(new B(one,two));t1.start();t2.start();}}
class A implements Runnable{One one;Two two;public A(One one, Two two) {super();this.one = one;this.two = two;}@Overridepublic void run() {//线程A占用锁onesynchronized (one) {//为保证一定会出现死锁让其睡一秒钟try {Thread.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println("A对象执行one");//等待线程B将two锁归还synchronized (two) {System.out.println("A对象执行two");}}}}
class B implements Runnable{One one;Two two;public B(One one, Two two) {super();this.one = one;this.two = two;}@Overridepublic void run() {//线程B占用锁twosynchronized (two) {System.out.println("B对象执行two");//等待线程A将one锁归还synchronized (one) {System.out.println("B对象执行one");}}}}
class One{}
class Two{}

java 多线程 实现死锁问题相关推荐

  1. Java多线程之死锁编码及定位分析

    Java多线程之死锁编码及定位分析 目录 死锁是什么 代码实现 死锁解决办法 1. 死锁是什么 死锁是指两个或两个以上的进程在执行过程中因争夺资而造成的一种互相等待的现象,若无外力干涉那它们都将无法推 ...

  2. Java多线程探究-死锁原因

    进程死锁及解决办法 一.要点提示 (1) 掌握死锁的概念和产生死锁的根本原因. (2) 理解产生死锁的必要条件--以下四个条件同时具备:互斥条件.不可抢占条件.占有且申请条件.循环等待条件. (3)  ...

  3. Java多线程p22 死锁

    p22 死锁 package kuang.thread;public class DeadLock {//需要的资源只有一份,用static来保证只有一份public static void main ...

  4. Java 多线程(三):锁(一)

    Java 多线程(三):锁(一) 作者:Grey 原文地址: 博客园:Java 多线程(三):锁(一) CSDN:Java 多线程(三):锁(一) CAS 比较与交换的意思 举个例子,内存有个值是 3 ...

  5. Java多线程闲聊(二):活锁和死锁

    Java多线程闲聊(二):活锁和死锁 这两个情况其实都是应该需要避免的情况,为了便于自己的回顾,我还是希望通过尽可能简单的表达来进行简要的归纳. 何谓死锁,就是正正紧紧按照Java的规范进行编程依然会 ...

  6. Java多线程中的死锁问题

    Java程序基本都要涉及到多线程,而在多线程环境中不可避免的要遇到线程死锁的问题.Java不像数据库那么能够检测到死锁,然后进行处理,Java中的死锁问题,只能通过程序员自己写代码时避免引入死锁的可能 ...

  7. java多线程中的死锁、活锁、饥饿、无锁都是什么鬼?

    转载自 java多线程中的死锁.活锁.饥饿.无锁都是什么鬼? 死锁.活锁.饥饿是关于多线程是否活跃出现的运行阻塞障碍问题,如果线程出现了这三种情况,即线程不再活跃,不能再正常地执行下去了. 死锁 死锁 ...

  8. java多线程死锁代码_java多线程死锁 编写高质量代码:改善Java程序的151个建议...

    java多线程死锁 编写高质量代码:改善Java程序的151个建议 第1章 Java开发中的通用方法和准则 建议1:不要在常量和变量中出现易混淆的字母 建议2:莫让常量蜕变成变量 建议3:三元操作符的 ...

  9. Java多线程编程(四)——死锁问题

    死锁 什么是死锁? 什么情况下会产生死锁? 生产者与消费者 什么是生产者与消费者? Object类的等待和唤醒方法 生产者-消费者案例(唤醒机制) 基本写法 代码书写技巧与"套路" ...

  10. JAVA的多线程、死锁、线程间通信、如何规避死锁、线程安全的单例模式

    主要内容: 多线程 线程和进程间的关系 Java中的线程理论 Java中线程类的实现方式 Java中线程的常用方法 线程安全性问题 线程间通信 线程的死锁 如何规避死锁 线程安全的单例模式 多线程 线 ...

最新文章

  1. python文件输出-python文件流
  2. 利用MATLAB进行系统时域分析,实验二 利用matlab进行系统的时域分析
  3. ztree 自定义参数_Ztree节点前加上两个自定义按钮
  4. jpa java.util.map_使用JPA存储Map String,String
  5. chrome的timeline的问题?
  6. Android SDK Manager下载详解
  7. 浅谈Spring如何利用三个缓存Map解决循环依赖
  8. IBM 人工智能黑科技
  9. JAVA游戏土行孙_《封神榜》土行孙,被誉为国内最知名矮星,现惨淡靠低保度日...
  10. HTML2——图像、超链接
  11. 关于开灯问题的两种解法
  12. shapely包导入问题
  13. 输入年月日实现计算这是一年的第几天
  14. Zbrush笔刷讲解
  15. python读取excel单元格填充色rgb_Python openpyxl读取单元格字体颜色过程解析
  16. Windows与网络基础
  17. babylon创建文字
  18. error怎么开机 fan_电脑开机提示CPU Fan Error是什么意思?如何解决?
  19. 手机微信占用了大量内存?这3个方法,帮你从源头清理垃圾
  20. 设计模式(Java)----装饰模式Decorator

热门文章

  1. Java自定义注解--银行卡校验
  2. 数值分析课程主要学习内容总结
  3. 查看文件的SHA256校验值
  4. 服务器开发是做什么的和必备技术汇总
  5. N年前的实习记录 - 职场生涯应如何规划?
  6. 网络爬虫异常处理总结
  7. 建筑工程图上的尺寸数字
  8. pandas——显示设置
  9. xctf crazy
  10. python英文日期转数字年月日格式