java基础(死锁)
2015-12-16 21:10
447 查看
/* 死锁(同步中嵌套同步,而使用不同的锁) */ class Test implements Runnable { private boolean flag = true; Test(boolean flag) { this.flag=flag; } public void run() { if(flag) { synchronized(Lock.a) { System.out.println("ia"); synchronized(Lock.b) { System.out.println("ib"); } } } else { synchronized(Lock.b) { System.out.println("ea"); synchronized(Lock.a) { System.out.println("eb"); } } } } } class Lock { static Object a=new Object(); static Object b=new Object(); } class Ly { public static void main(String[] args) { Thread t1=new Thread(new Test(true)); Thread t2=new Thread(new Test(false)); t1.start(); t2.start(); } } /* class Ticket implements Runnable { private int tick =100; Object obj =new Object(); boolean flag=true; public void run() { if(flag) { while(true) { synchronized(this) { if(tick>0) { try { Thread.sleep(10); } catch(Exception e) { } System.out.println(Thread.currentThread().getName()+"...Rest:"+tick--); } } } } else while(true) show(); } public synchronized void show() { if(tick>0) { try { Thread.sleep(10); } catch(Exception e) { } System.out.println(Thread.currentThread().getName()+"...Rest:"+tick--); } } } class Ly { 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(Exception e){} t.flag=false; t2.start(); } } */
相关文章推荐
- 安卓学习记录-java-day2
- JAVA-观察者设计模式
- 网页文件上传
- Java自定义注解入门
- eclipse#1
- 深入分析JavaWeb Item23 -- jsp自定义标签开发入门
- Java List序列化的实现
- Java学习笔记(IO_1)
- Spring-Boot-XML-Restful-Service
- 在eclipse中运行工程时 出现<ConnectionProperties> <PropertyCategory name="Connection/Authentication">的解决方法
- java web单点登录异常情况处理
- java#0 基本概念
- 黑马程序员——Eclipse快捷键总结
- 黑马程序员——Java开发工具Eclipse的使用
- Java的国际化支持(I18N问题)
- Java的国际化支持(I18N问题)
- Java WebService-CXF-基于SOAP的Web服务
- 使用eclipse发布web服务出现"Error occured when adding the module, xxxxxx, to the server"
- java.lang.RuntimeException: setAudioSource failed.
- 设置查看java的源程序