dengxinyi vor 6 Jahren
Ursprung
Commit
a47c44063a
2 geänderte Dateien mit 66 neuen und 0 gelöschten Zeilen
  1. 5 0
      oj/concurrent/TestInterrupt.java
  2. 61 0
      oj/concurrent/TestSynchronized.java

+ 5 - 0
oj/concurrent/TestInterrupt.java

@@ -21,6 +21,11 @@ public class TestInterrupt {
             }
         });
         executor.shutdownNow();
+
+        executor = Executors.newFixedThreadPool(1);
+        Future<?> future = executor.submit(new InterruptThread());
+        future.cancel(true);
+        executor.shutdown();
     }
 }
 

+ 61 - 0
oj/concurrent/TestSynchronized.java

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