java-写一个死锁的案例
2014-08-31 15:09
525 查看
死锁:线程A持有一个对象a1的互斥锁,又试图获取另外一个对象b1的互斥锁,而线程B正好持有对象a1的互斥锁,并且试图获取对象b1的互斥锁,2个线程相互等待对方的资源而又互相不作出让步。
<span style="font-size:14px;">package com.test; /** * 死锁测试 * @author mooner * */ public class DeadThreadLock { public static void main(String[] args) { String s1 = "a"; String s2 = "b"; ThreadLock t1 = new ThreadLock(s1,s2); //持有"a"的互斥锁,尝试获取"b"的互斥锁 t1.start(); ThreadLock t2 = new ThreadLock(s2,s1); //持有"b"的互斥锁,尝试获取"a"的互斥锁 t2.start(); } } /** * 死锁多线程 * @author mooner * */ class ThreadLock extends Thread{ private String s1; private String s2; public ThreadLock(){ } public ThreadLock(String s1,String s2){ this.s1 = s1; this.s2 = s2; } public void run(){ synchronized(s1){ //获取s1对象的互斥锁 System.out.println(Thread.currentThread().getName() +"持有对象 "+s1+" 的锁"); try { Thread.sleep(4000); //睡眠4s钟,好在获取s2对象的互斥锁前,另外一个线程开始运行 } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(Thread.currentThread().getName() +"尝试获取 "+s2+" 的锁"); synchronized(s2){ //获取s2对象的互斥锁子 } } } }</span>
相关文章推荐
- Java同比环比如何开发(请教一个案例)
- 出现 java.lang.NullPointerException 的一个案例
- java的一个简单死锁的例子
- JAVA笔记14__多线程共享数据(同步)/ 线程死锁 / 生产者与消费者应用案例 / 线程池
- java学习--多线程发生死锁的一个例子
- [java]一个多线程引起的死锁(class初始化,锁)
- 一个简单的java死锁示例
- 7次重构 - Java应用架构设计中的一个案例
- 一个案例帮你理解java正则表达式split分割方法
- java多线程中死锁情况的一个示例
- java写一个死锁的简单例子
- java中的线程死锁的一个例子
- java中线程的同步的一个卖票的小案例
- Java 序列化对象的一个使用案例
- java线程:一个死锁的小程序
- 八 一个JAVA案例
- java的UDP进行通信的一个小案例
- JAVA实现的一个简单的死锁(附解释)
- 一个简单的java文件反编译案例
- SELINUX设为Disable 影响java SSH工具包Jsch 0.1.49.jar的一个案例