java的死锁示例
来源:互联网 发布:大数据 涂子沛3.0 编辑:程序博客网 时间:2024/05/21 04:00
package lock;class A{ public synchronized void foo( B b ) { System.out.println("当前线程名: " + Thread.currentThread().getName() + " 进入了A实例的foo()方法" ); // ① try { Thread.sleep(200); } catch (InterruptedException ex) { ex.printStackTrace(); } System.out.println("当前线程名: " + Thread.currentThread().getName() + " 企图调用B实例的last()方法"); // ③ b.last(); } public synchronized void last() { System.out.println("进入了A类的last()方法内部"); }}class B{ public synchronized void bar( A a ) { System.out.println("当前线程名: " + Thread.currentThread().getName() + " 进入了B实例的bar()方法" ); // ② try { Thread.sleep(200); } catch (InterruptedException ex) { ex.printStackTrace(); } System.out.println("当前线程名: " + Thread.currentThread().getName() + " 企图调用A实例的last()方法"); // ④ a.last(); } public synchronized void last() { System.out.println("进入了B类的last()方法内部"); }}public class DeadLock implements Runnable{ A a = new A(); B b = new B(); public void init() { Thread.currentThread().setName("主线程"); // 调用a对象的foo方法 a.foo(b); System.out.println("进入了主线程之后"); } public void run() { Thread.currentThread().setName("副线程"); // 调用b对象的bar方法 b.bar(a); System.out.println("进入了副线程之后"); } public static void main(String[] args) { DeadLock dl = new DeadLock(); // 以dl为target启动新线程 new Thread(dl).start(); // 调用init()方法 dl.init(); }}
阅读全文
0 0
- java的死锁示例
- Java实现的死锁示例
- 一个简单的Java死锁示例
- 一个简单的java死锁示例
- 【代码示例】 一个简单的Java死锁
- Java:一个简单的死锁示例
- Java基础:死锁示例
- java死锁代码示例
- 死锁,Java简单示例
- Java死锁代码示例
- Java死锁示例及检测
- 关于Java中多线程死锁的代码示例
- java多线程中死锁情况的一个示例
- java多线程中死锁情况的一个示例
- 导致死锁的SQL示例
- 一个简单的死锁示例
- JAVA多线程死锁现象示例展示
- Java多线程㈢—死锁(示例)
- 插入排序练习题
- android studio 导入 eclipse项目 报错 Error: Some file crunching failed, see logs for details
- layui页面元素使用(一)
- 堆排序
- 介绍memcache与redis 以及相互之间的比较
- java的死锁示例
- JAVA开发之 29-java数组
- 北大“人工智能前沿与产业趋势”课程整理03
- mysql根据字段查询数据库中的存在该字段的所有数据表
- 元类型之qRegisterMetaType
- Android屏幕适配全攻略(最权威的官方适配指导)
- Linux最大文件句柄(文件描述符)限制和修改
- YTU3138--货币面值(背包问题变式)
- Python collections.defaultdict() 的使用