Java一个简单的死锁程序

来源:互联网 发布:y700 mac os 编辑:程序博客网 时间:2024/06/07 07:24
 
package namespace;class Dead implements Runnable{public boolean flag;public Object locka=new Object();public Object lockb=new Object();public Dead(boolean f) {this.flag=f;}public void run(){     while(true) {if(flag){synchronized(Lock.locka){System.out.println("if loca");synchronized(Lock.lockb){System.out.println("if lockb");}}}else {synchronized(Lock.lockb){System.out.println("else lockb");synchronized (Lock.locka) {System.out.println("else locka");}}}     }}}class Lock{static Object locka=new Object();static Object lockb=new Object();}public class DeadLock {public static void main(String args[]){Thread t1=new Thread(new Dead(true));Thread t2=new Thread(new Dead(false));t1.start();t2.start();}}/* *写一个死锁程序 *容易引起 是因为两个锁引用的不是同一个锁,这样就会引起死锁现在 * *还有在多现在中出现安全性问题的时候,一般要考虑的问题: *1.   是不是两个线程,并且两个线程有没有同步,也就是有没有 synchronized 块或函数 *  2.   如果有多个同步代码块或同步函数的话,那看看所有 的同步它们用的是不是同一个锁,如果不是,会引起死锁和安全性问题 * * */  2011/10/23  15:13:46

原创粉丝点击