多线程(死锁)
2015-10-23 22:46
225 查看
线程死锁的原因:
同步中嵌套同步,但是锁却不同
死锁演示(DeadLockDemo):
DeadLockDemo
同步中嵌套同步,但是锁却不同
死锁演示(DeadLockDemo):
class Test implements Runnable { private boolean flag; //构造函数中传入标记的值,用来操作run方法中的if else循环 Test(boolean flag) { this.flag = flag; } public void run() { if(flag) { while(true) { synchronized(MyLock.lockA) { System.out.println(Thread.currentThread().getName()+"...if lockA "); synchronized(MyLock.lockB) { System.out.println(Thread.currentThread().getName()+"..if lockB"); } } } } else { while(true) { synchronized(MyLock.lockB) { System.out.println(Thread.currentThread().getName()+"..else lockB"); synchronized(MyLock.lockA) { System.out.println(Thread.currentThread().getName()+".....else lockA"); } } } } } } //放置了两个锁 class MyLock { static Object lockA = new Object(); static Object lockB = new Object(); } class DeadLockTest { public static void main(String[] args) { //传入true使其在if循环中 Thread t1 = new Thread(new Test(true)); //传入false使其在if循环中 Thread t2 = new Thread(new Test(false)); t1.start(); t2.start(); } }
DeadLockDemo
相关文章推荐
- UVA 11464 偶数矩阵
- iOS-捕获应用程序崩溃日志
- EM3002D、Seapath200、MRU-H安装测量及校准
- Android下拉刷新完全解析,教你如何一分钟实现下拉刷新功能
- TCP协议的三次握手建立连接及四次握手断开连接
- Laravel入门基础教程(一)
- 包装类(转)
- 递归和for循环
- 欢迎使用CSDN-markdown编辑器
- HTML中下拉框的简单介绍<Select><option>
- android中的SurfaceView,SurfaceHolder,SurfaceHolder.CallBack
- 二,jquery对象 与 dom对象关系
- LeetCode OJ:Binary Search Tree Iterator(二叉搜索树迭代器)
- 编程思想之多线程与多进程(1)——以操作系统的角度述说线程与进程
- 如何从List集合中删除对象
- java基础的总结(1)
- Ubuntu系统清理
- 笔试编程总结
- Java传值与传引用
- linux下安装mysql数据库与相关操作