java再复习——线程的死锁问题
来源:互联网 发布:数据库概论第五版 编辑:程序博客网 时间:2024/06/01 20:57
使用多线程的时候,除了因为操作共享数据带来的安全问题,还有一个就是因为,为了避免安全问题去使用同步,但是因为同步使用不当而产生的死锁问题。
例子:
public class DeadLockDemo {public static void main(String[] args) {Data data = new Data();new Thread(new RunnableA(data)).start();new Thread(new RunnableB(data)).start();}}class RunnableA implements Runnable{Data data;public RunnableA(Data data){this.data = data;}public void run() {synchronized(this){System.out.println(data.i--);synchronized(data){System.out.println(data.i--);}}}}class RunnableB implements Runnable{Data data;public RunnableB(Data data){this.data = data;}public void run() {synchronized(this){System.out.println(data.i--);synchronized(data){System.out.println(data.i--);}}}}class Data {public int i = 100;}
同步代码块的嵌套。同步代码块互相嵌套会发生互相所要锁的问题,如果一个线程拿到了A锁等B锁,另一个线程拿到了B锁等A锁,那么程序就会堵死,执行不下去,这就是死锁。
上面的例子举的不是很好。因为死锁这问题,在编写多线程的时候规范,一般不会出现的。就算出现了,知道原因,根据原因去查哪里写的不规范就可以了。
0 0
- java再复习——线程的死锁问题
- Java复习之线程的同步与死锁
- java线程死锁问题
- java线程死锁问题
- java再复习——线程的经典问题-生产者消费者
- java线程——死锁
- java线程——死锁
- Java——线程死锁
- 学习笔记——JAVA线程<5>线程的死锁
- 线程死锁的问题
- java再复习——线程的安全问题以及同步
- Java中的线程同步及线程死锁复习
- 线程中死锁的问题
- 关于线程死锁的问题
- 线程死锁问题的分析
- java线程状态——死锁
- 线程的相关知识、JAVA实现死锁、生产者消费者问题
- java 线程死锁的检测
- arcgis文本标注换行处理
- Tomcat之session详解
- leetcode 202. Happy Number
- C#编写飞行棋游戏
- 关于request的获取path的方法
- java再复习——线程的死锁问题
- Java中堆内存和栈内存详解
- 通向架构师的道路(第六天)之漫谈基于数据库的权限系统的设计
- 创建第一个struts2项目
- 这几个问题解决了,怎么设计大型网站架构不再是困难
- C++静态成员函数、静态成员小结
- POJ2718-Smallest Difference
- [leetcode]189. Rotate Array
- c版多线程