|
@@ -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);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|