首页 > 代码库 > Java Tread多线程(3)死锁
Java Tread多线程(3)死锁
作者 : 卿笃军
原文地址:http://blog.csdn.net/qingdujun/article/details/39367655
本文演示,Tread多线程死锁,简单的分析一下死锁产生的原因,并展示一个死锁的小Demo。
1)死锁产生原因
2)小Demo
一、死锁产生的原因:同步中嵌套同步。
二、一个死锁小Demo:(锁loacka中需要锁lockb,锁lockb中又需要锁locka,然后加上while(true)在里面一顿狂转,直接锁住了。)
package no.zuo.no.die; //1.实现Runnable接口 class Zuosi implements Runnable { private boolean flag; Zuosi(boolean f) { flag = f; } //2.重写run方法 public void run() { if (flag) { while (true) { synchronized (CLock.locka) { System.out.println("if locka"); synchronized (CLock.lockb) { System.out.println("if lockb"); } } } } else { while (true) { synchronized (CLock.lockb) { System.out.println("else lockb"); synchronized (CLock.locka) { System.out.println("else locka"); } } } } } } //里面装2把锁 class CLock { static Object locka = new Object(); static Object lockb = new Object(); } public class CDeadLock { public static void main(String[] args) { //3.创建2线程 Thread t1 = new Thread(new Zuosi(true)); Thread t2 = new Thread(new Zuosi(false)); //4.启动线程 t1.start(); t2.start(); } }运行显示结果(卡死了吧?锁住了!!!):
参考文献: Java视频 毕向东 主讲
原文地址:http://blog.csdn.net/qingdujun/article/details/39367655
Java Tread多线程(3)死锁
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。