JAVAデッドロック2


public class Deadlock{
    public static void main(String[  ] args) {
        final Object resource1 = "resource1";
        final Object resource2 = "resource2";
        int a=0;
        Thread t1 = new Thread( ) {
                public void run( ) {
                    synchronized(resource1) {
                        System.out.println("Thread 1: locked resource 1");
                        try { 
                        	Thread.sleep(50); 
                        }catch (InterruptedException e) {  
                        	
                        }
                        synchronized(resource2) {
	                        	while(true){
	                        		System.out.println("Thread 1: locked resource 2");
		                            try {
		                            	Thread.sleep(10000);
		                            }catch (InterruptedException e) {
		                            	
		                            }
                        	}
                        }
                    }
                }
            };
        
        Thread t2 = new Thread( ) {
                public void run( ) {
                    synchronized(resource2) {
                        
                    	System.out.println("Thread 2: locked resource 2");
                        
                        try { 
                        	Thread.sleep(50); 
                        }catch (InterruptedException e) {  
                        	
                        }   
                        synchronized(resource1) {
                        	
                            System.out.println("Thread 2: locked resource 1");
                            
                        }
                    }
                }
            };
        
        t1.start( ); 
        t2.start( );
    }
}