| 
					
				 | 
			
			
				@@ -0,0 +1,61 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.concurrent.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class TestSynchronized { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public static void main(String[] args) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ExecutorService executor = Executors.newCachedThreadPool(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        SyncSample ss = new SyncSample(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        executor.execute(() -> ss.func1()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        executor.execute(() -> ss.func1()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Thread.sleep(100); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        executor.execute(() -> ss.func2()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        executor.execute(() -> ss.func2()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Thread.sleep(100); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        SyncSample ss2 = new SyncSample(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        executor.execute(() -> ss.func3()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        executor.execute(() -> ss2.func3()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        executor.shutdown(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class SyncSample { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void func1() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        System.out.println("Before sync this"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Thread.sleep(10); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        synchronized (this) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (int i = 0; i < 5; i++) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                System.out.println(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public synchronized void func2() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        System.out.println("Before sync method"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Thread.sleep(10); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (int i = 0; i < 5; i++) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            System.out.println(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void func3() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        System.out.println("Before sync class"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Thread.sleep(10); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        synchronized (SyncSample.class) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (int i = 0; i < 5; i++) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                System.out.println(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |