关闭

Java多线程死锁的例子

275人阅读 评论(0) 收藏 举报
分类:
  1. package com.damlab.fz;  
  2.   
  3. public class DeadLock {  
  4.     public static void main(String[] args) {  
  5.         Resource r1= new Resource();  
  6.         Resource r2= new Resource();  
  7.         //每个线程都拥有r1,r2两个对象  
  8.         Thread myTh1 = new MyThread1(r1,r2);  
  9.         Thread myTh2 = new MyThread2(r1,r2);  
  10.         myTh1.start();  
  11.         myTh2.start();  
  12.     }  
  13. }  
  14.   
  15. class Resource{  
  16.     private int i;  
  17. }  
  18.   
  19. class MyThread1 extends Thread{  
  20.     private Resource r1,r2;  
  21.     public MyThread1(Resource r1, Resource r2) {  
  22.         this.r1 = r1;  
  23.         this.r2 = r2;  
  24.     }  
  25.   
  26.     @Override  
  27.     public void run() {  
  28.         while(true){  
  29.         //先获得r1的锁,再获得r2的锁     
  30.         synchronized (r1) {  
  31.             System.out.println("1号线程获取了r1的锁");  
  32.             synchronized (r2) {  
  33.                 System.out.println("1号线程获取了r2的锁");  
  34.             }  
  35.         }  
  36.         }  
  37.     }  
  38.       
  39. }  
  40.   
  41. class MyThread2 extends Thread{  
  42.     private Resource r1,r2;  
  43.     public MyThread2(Resource r1, Resource r2) {  
  44.         this.r1 = r1;  
  45.         this.r2 = r2;  
  46.     }  
  47.   
  48.     @Override  
  49.     public void run() {  
  50.         while(true){  
  51.         //先获得r2的锁,再获得r1的锁  
  52.         synchronized (r2) {  
  53.             System.out.println("2号线程获取了r2的锁");  
  54.             synchronized (r1) {  
  55.                 System.out.println("2号线程获取了r1的锁");  
  56.             }  
  57.         }  
  58.         }  
  59.     }  
  60.       
  61. }  



0
0
查看评论

java线程死锁例子

<br />package com.yangtianb.test.Thread;<br /><br /> public class TestDeadLock implements Runnable {<br />    ...
  • LJHABC1982
  • LJHABC1982
  • 2011-04-06 09:52
  • 4476

一个多线程的死锁和锁争用的例子

在多线程编程中,为了保持同步,需要使用互斥锁保护临界区,但是多线程共同使用互斥锁的时候会造成死锁或者锁争用的情况: 死锁: 产生死锁的原因主要是: (1) 因为系统资源不足。 (2) 进程运行推进的顺序不合适。 (3) 资源分配不当等。 如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能...
  • yusiguyuan
  • yusiguyuan
  • 2014-03-25 09:14
  • 3377

java线程死锁例子及解决方法

Java线程死锁是由于有些资源彼此交叉取用,就有可能造成死结.如1线程中 取得A对象的锁定后又要取得B对象的锁定.但是同时2线程中取得B对象的锁定后又要取得A对象的锁定.这两个线程同时发生时就会造成,1线程拿到A对象锁定后等待B对象的锁定.2线程拿到B对象锁定后等待A对象锁定.这样就会进入没有停止的...
  • u013243986
  • u013243986
  • 2015-09-08 08:39
  • 3274

多线程死锁例子

一.例子  两个资源对象o1,o2,两个线程t1,t2。 设置t1的初始条件为真,线程启动后。t1获取o1锁,然后等待o2。然后获取o2锁,然后释放o2锁。接着释放o1锁。程序结束 设置t2的初始条件为真,线程启动后。t2获取o2锁,然后等待o1。然后获取o1锁,然后释放o1锁。接着...
  • u010915032
  • u010915032
  • 2016-07-28 23:51
  • 981

一起talk C栗子吧(第一百一十七回:C语言实例--线程死锁一)

各位看官们,大家好,上一回中咱们说的是线程同步之互斥量的例子,这一回咱们说的例子是:线程死锁。闲话休提,言归正转。让我们一起talk C栗子吧!
  • talk_8
  • talk_8
  • 2016-02-01 21:30
  • 1477

c++多线程之死锁的发生的情况解析(包含两个归纳,6个示例)

一、死锁会在什么情况发生 1、假设有如下代码 mutex; //代表一个全局互斥对象 void A() { mutex.lock(); //这里操作共享数据 B(); //这里调用B方法 ...
  • i_likechard
  • i_likechard
  • 2017-10-11 17:16
  • 168

多线程死锁的一个简单例子

package web1; import java.util.concurrent.atomic.AtomicInteger; public class Main1 {     public static void main(String[] args) { &#...
  • JeamKing
  • JeamKing
  • 2017-06-11 17:13
  • 280

多线程造成死锁的例子

1、假设有如下代码    pthread_mutex_t mutex;   //代表一个全局互斥对象    void  A()       {   &#...
  • fycy2010
  • fycy2010
  • 2015-08-13 22:51
  • 1324

Java一个简单的死锁例子

内容:一个简单的死锁例子,大概的思路:两个线程A和B,两把锁X和Y,现在A先拿到锁X,然后sleep()一段时间,我们知道sleep()是不会释放锁资源的。然后如果这段时间线程B拿到锁Y,也sleep()一段时间的话,那么等到两个线程都醒过来的话,那么将互相等待对方释放锁资源而僵持下去,陷入死锁。f...
  • u011345136
  • u011345136
  • 2015-05-16 20:07
  • 1773

(十四)java多线程之死锁

本人邮箱: kco1989@qq.com 欢迎转载,转载请注明网址 http://blog.csdn.net/tianshi_kco github: https://github.com/kco1989/kco 代码已经全部托管github有需要的同学自行下载 引言多线程如果设计的...
  • tianshi_kco
  • tianshi_kco
  • 2016-10-31 22:11
  • 528
    个人资料
    • 访问:1204546次
    • 积分:17571
    • 等级:
    • 排名:第655名
    • 原创:662篇
    • 转载:741篇
    • 译文:1篇
    • 评论:48条
    最新评论