javaSE-线程死锁
来源:互联网 发布:php 数组弹出第一个 编辑:程序博客网 时间:2024/05/17 07:13
/*
同步的另一个弊端:
容易引发死锁。
开发时,尽量避免同步嵌套的情况。
*/
同步的另一个弊端:
容易引发死锁。
开发时,尽量避免同步嵌套的情况。
*/
class Ticket implements Runnable{private int num = 100;boolean flag = true;Object obj = new Object();public void run(){if(flag){while(true){synchronized(obj){sale();}}}elsewhile(true){this.sale();}}public synchronized/**/ void sale()//同步函数。{synchronized(obj){if(num>0){try{Thread.sleep(10);}catch(InterruptedException e){}System.out.println(Thread.currentThread().getName()+"..sale:"+num--);}}}}class ThreadDemo7_Ticket_DeadLock{public static void main(String[] args) {Ticket t = new Ticket();Thread t1 = new Thread(t);Thread t2 = new Thread(t);t1.start();try{Thread.sleep(10);}catch(InterruptedException e){}t.flag = false;t2.start();}}
死锁代码演示
class Demo implements Runnable {private boolean flag;Demo(boolean flag) {this.flag = flag;}public void run() {if (flag) {while (true) {synchronized (MyLock.LOCKA) {System.out.println("if locka");synchronized (MyLock.LOCKB) {System.out.println("if lockb");}}}} else {while (true) {synchronized (MyLock.LOCKB) {System.out.println("else lockb");synchronized (MyLock.LOCKA) {System.out.println("else locka");}}}}}}class MyLock {public static final Object LOCKA = new Object();public static final Object LOCKB = new Object();}class ThreadDemo8_DeadLock {public static void main(String[] args) {Demo d1 = new Demo(true);Demo d2 = new Demo(false);Thread t1 = new Thread(d1);Thread t2 = new Thread(d2);t1.start();t2.start();}}
0 0
- javaSE-线程死锁
- JAVASE总结--线程的死锁
- JavaSE 多线程 死锁示例
- javase线程
- 线程死锁
- 线程死锁
- 线程死锁
- 线程死锁
- 线程死锁
- 线程死锁
- 线程死锁
- 线程死锁
- 线程死锁
- 线程-死锁
- 线程死锁
- 线程死锁
- 线程死锁
- 线程死锁
- 基于HIVE文件格式的map reduce代码编写
- 最新版UltraEdit for mac 3.2.0.10免费破解版下
- 对攒钱扯扯蛋
- 手机客户端在Web页面上事件触发打开Word
- Android平台Gallery2应用分析(七)---PhotoPage图片解码
- javaSE-线程死锁
- linux上core文件生成和分析
- weka中算法说明
- Adaboost
- android 点九PNG技术 适应不同分辨率 完美显示效果
- eclipse编译android项目时,如何把依赖的jar包也打进apk中
- Apache配置多个门户网站效果等同于IIS建设多个门户站
- 1500 Prime Gap + 判定素数isPrime的三种方法
- Silverlight中恼人的g.i.cs错误