From 62e2025a20520656bfea5b8c66de5d734cd0aa84 Mon Sep 17 00:00:00 2001 From: Sander Hautvast Date: Fri, 20 Sep 2019 13:34:33 +0200 Subject: [PATCH] initial commit --- .idea/encodings.xml | 4 + .idea/misc.xml | 6 + .idea/modules.xml | 8 + .idea/uiDesigner.xml | 124 ++ .idea/workspace.xml | 1057 +++++++++++++++++ ConcurrencyPuzzlers.iml | 21 + .../ConcurrencyPuzzlers.kotlin_module | Bin 0 -> 16 bytes .../chapter1/SafeSequence.class | Bin 0 -> 1986 bytes .../chapter1/UnsafeSequence.class | Bin 0 -> 2061 bytes .../chapter1/cretans/Cretan.class | Bin 0 -> 595 bytes .../chapter1/cretans/CretanAttack.class | Bin 0 -> 1914 bytes .../chapter1/cretans/SynchronizedCretan.class | Bin 0 -> 899 bytes .../cretans/SynchronizedCretan2.class | Bin 0 -> 904 bytes .../cretans/SynchronizedCretan3.class | Bin 0 -> 1077 bytes .../cretans/SynchronizedCretan4.class | Bin 0 -> 1113 bytes .../cretans/SynchronizedCretan5.class | Bin 0 -> 1750 bytes .../chapter2/ExpensiveObject.class | Bin 0 -> 885 bytes .../chapter2/LazyInit.class | Bin 0 -> 1576 bytes .../chapter2/SafeLazyInit.class | Bin 0 -> 2278 bytes .../AttemptToShowReordering$State.class | Bin 0 -> 498 bytes .../chapter3/AttemptToShowReordering.class | Bin 0 -> 2040 bytes .../chapter3/NonAtomicDoubleUpdates.class | Bin 0 -> 2708 bytes .../chapter3/Publication.class | Bin 0 -> 391 bytes .../chapter3/Visibility.class | Bin 0 -> 1302 bytes .../chapter3/VolatileCretan.class | Bin 0 -> 1621 bytes .../chapter3/VolatileStatus.class | Bin 0 -> 2580 bytes .../chapter4/Atomicity.class | Bin 0 -> 1905 bytes .../ConcurrencyPuzzlers/chapter4/Car.class | Bin 0 -> 612 bytes .../chapter4/Ownership.class | Bin 0 -> 482 bytes .../chapter4/Ownership2.class | Bin 0 -> 810 bytes .../chapter5/ShowMeTheValues.class | Bin 0 -> 1883 bytes .../chapter5/juc/HashMapTest.class | Bin 0 -> 2602 bytes .../chapter6/CachedThreadPool.class | Bin 0 -> 1716 bytes .../chapter6/CompletionServiceExample.class | Bin 0 -> 2590 bytes .../chapter6/FixedThreadPoolWebserver.class | Bin 0 -> 2706 bytes .../chapter6/Shutdown.class | Bin 0 -> 2318 bytes .../chapter6/ShutdownNow.class | Bin 0 -> 2427 bytes .../chapter6/SingleThreadExecutor.class | Bin 0 -> 1614 bytes .../chapter6/futures/CancelledFuture.class | Bin 0 -> 2904 bytes .../chapter6/futures/ExceptionalFuture.class | Bin 0 -> 2724 bytes .../chapter6/futures/TheFuture.class | Bin 0 -> 2651 bytes .../chapter7/TrickyTaskCancellation.class | Bin 0 -> 2682 bytes .../common/NotThreadSafe.class | Bin 0 -> 153 bytes .../common/TestHarness.class | Bin 0 -> 2642 bytes .../common/ThreadSafe.class | Bin 0 -> 147 bytes .../sleepers/Sleeper1.class | Bin 0 -> 681 bytes .../sleepers/Sleeper2.class | Bin 0 -> 740 bytes .../sleepers/Sleeper3a.class | Bin 0 -> 825 bytes .../sleepers/Sleeper3b.class | Bin 0 -> 2145 bytes .../sleepers/Sleeper4.class | Bin 0 -> 1128 bytes readme.md | 52 + src/chapter1/SafeSequence.java | 35 + src/chapter1/UnsafeSequence.java | 37 + src/chapter1/cretans/Cretan.java | 26 + src/chapter1/cretans/CretanAttack.java | 41 + src/chapter1/cretans/SynchronizedCretan.java | 31 + src/chapter1/cretans/SynchronizedCretan2.java | 28 + src/chapter1/cretans/SynchronizedCretan3.java | 30 + src/chapter1/cretans/SynchronizedCretan4.java | 31 + src/chapter1/cretans/SynchronizedCretan5.java | 36 + src/chapter2/ExpensiveObject.java | 16 + src/chapter2/LazyInit.java | 26 + src/chapter2/SafeLazyInit.java | 33 + src/chapter3/AttemptToShowReordering.java | 51 + src/chapter3/NonAtomicDoubleUpdates.java | 60 + src/chapter3/Publication.java | 6 + src/chapter3/Visibility.java | 20 + src/chapter3/VolatileCretan.java | 33 + src/chapter3/VolatileStatus.java | 47 + src/chapter4/Atomicity.java | 29 + src/chapter4/Car.java | 8 + src/chapter4/Ownership.java | 10 + src/chapter4/Ownership2.java | 16 + src/chapter5/ShowMeTheValues.java | 28 + src/chapter5/juc/HashMapTest.java | 34 + src/chapter6/CachedThreadPool.java | 23 + src/chapter6/CompletionServiceExample.java | 25 + src/chapter6/FixedThreadPoolWebserver.java | 41 + src/chapter6/Shutdown.java | 29 + src/chapter6/ShutdownNow.java | 28 + src/chapter6/SingleThreadExecutor.java | 19 + src/chapter6/futures/CancelledFuture.java | 36 + src/chapter6/futures/ExceptionalFuture.java | 30 + src/chapter6/futures/TheFuture.java | 32 + src/chapter7/TrickyTaskCancellation.java | 39 + src/common/NotThreadSafe.java | 4 + src/common/TestHarness.java | 67 ++ src/common/ThreadSafe.java | 4 + src/sleepers/Sleeper1.java | 13 + src/sleepers/Sleeper2.java | 15 + src/sleepers/Sleeper3a.java | 17 + src/sleepers/Sleeper3b.java | 38 + src/sleepers/Sleeper4.java | 33 + 93 files changed, 2477 insertions(+) create mode 100644 .idea/encodings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/uiDesigner.xml create mode 100644 .idea/workspace.xml create mode 100644 ConcurrencyPuzzlers.iml create mode 100644 out/production/ConcurrencyPuzzlers/META-INF/ConcurrencyPuzzlers.kotlin_module create mode 100644 out/production/ConcurrencyPuzzlers/chapter1/SafeSequence.class create mode 100644 out/production/ConcurrencyPuzzlers/chapter1/UnsafeSequence.class create mode 100644 out/production/ConcurrencyPuzzlers/chapter1/cretans/Cretan.class create mode 100644 out/production/ConcurrencyPuzzlers/chapter1/cretans/CretanAttack.class create mode 100644 out/production/ConcurrencyPuzzlers/chapter1/cretans/SynchronizedCretan.class create mode 100644 out/production/ConcurrencyPuzzlers/chapter1/cretans/SynchronizedCretan2.class create mode 100644 out/production/ConcurrencyPuzzlers/chapter1/cretans/SynchronizedCretan3.class create mode 100644 out/production/ConcurrencyPuzzlers/chapter1/cretans/SynchronizedCretan4.class create mode 100644 out/production/ConcurrencyPuzzlers/chapter1/cretans/SynchronizedCretan5.class create mode 100644 out/production/ConcurrencyPuzzlers/chapter2/ExpensiveObject.class create mode 100644 out/production/ConcurrencyPuzzlers/chapter2/LazyInit.class create mode 100644 out/production/ConcurrencyPuzzlers/chapter2/SafeLazyInit.class create mode 100644 out/production/ConcurrencyPuzzlers/chapter3/AttemptToShowReordering$State.class create mode 100644 out/production/ConcurrencyPuzzlers/chapter3/AttemptToShowReordering.class create mode 100644 out/production/ConcurrencyPuzzlers/chapter3/NonAtomicDoubleUpdates.class create mode 100644 out/production/ConcurrencyPuzzlers/chapter3/Publication.class create mode 100644 out/production/ConcurrencyPuzzlers/chapter3/Visibility.class create mode 100644 out/production/ConcurrencyPuzzlers/chapter3/VolatileCretan.class create mode 100644 out/production/ConcurrencyPuzzlers/chapter3/VolatileStatus.class create mode 100644 out/production/ConcurrencyPuzzlers/chapter4/Atomicity.class create mode 100644 out/production/ConcurrencyPuzzlers/chapter4/Car.class create mode 100644 out/production/ConcurrencyPuzzlers/chapter4/Ownership.class create mode 100644 out/production/ConcurrencyPuzzlers/chapter4/Ownership2.class create mode 100644 out/production/ConcurrencyPuzzlers/chapter5/ShowMeTheValues.class create mode 100644 out/production/ConcurrencyPuzzlers/chapter5/juc/HashMapTest.class create mode 100644 out/production/ConcurrencyPuzzlers/chapter6/CachedThreadPool.class create mode 100644 out/production/ConcurrencyPuzzlers/chapter6/CompletionServiceExample.class create mode 100644 out/production/ConcurrencyPuzzlers/chapter6/FixedThreadPoolWebserver.class create mode 100644 out/production/ConcurrencyPuzzlers/chapter6/Shutdown.class create mode 100644 out/production/ConcurrencyPuzzlers/chapter6/ShutdownNow.class create mode 100644 out/production/ConcurrencyPuzzlers/chapter6/SingleThreadExecutor.class create mode 100644 out/production/ConcurrencyPuzzlers/chapter6/futures/CancelledFuture.class create mode 100644 out/production/ConcurrencyPuzzlers/chapter6/futures/ExceptionalFuture.class create mode 100644 out/production/ConcurrencyPuzzlers/chapter6/futures/TheFuture.class create mode 100644 out/production/ConcurrencyPuzzlers/chapter7/TrickyTaskCancellation.class create mode 100644 out/production/ConcurrencyPuzzlers/common/NotThreadSafe.class create mode 100644 out/production/ConcurrencyPuzzlers/common/TestHarness.class create mode 100644 out/production/ConcurrencyPuzzlers/common/ThreadSafe.class create mode 100644 out/production/ConcurrencyPuzzlers/sleepers/Sleeper1.class create mode 100644 out/production/ConcurrencyPuzzlers/sleepers/Sleeper2.class create mode 100644 out/production/ConcurrencyPuzzlers/sleepers/Sleeper3a.class create mode 100644 out/production/ConcurrencyPuzzlers/sleepers/Sleeper3b.class create mode 100644 out/production/ConcurrencyPuzzlers/sleepers/Sleeper4.class create mode 100644 readme.md create mode 100644 src/chapter1/SafeSequence.java create mode 100644 src/chapter1/UnsafeSequence.java create mode 100644 src/chapter1/cretans/Cretan.java create mode 100644 src/chapter1/cretans/CretanAttack.java create mode 100644 src/chapter1/cretans/SynchronizedCretan.java create mode 100644 src/chapter1/cretans/SynchronizedCretan2.java create mode 100644 src/chapter1/cretans/SynchronizedCretan3.java create mode 100644 src/chapter1/cretans/SynchronizedCretan4.java create mode 100644 src/chapter1/cretans/SynchronizedCretan5.java create mode 100644 src/chapter2/ExpensiveObject.java create mode 100644 src/chapter2/LazyInit.java create mode 100644 src/chapter2/SafeLazyInit.java create mode 100644 src/chapter3/AttemptToShowReordering.java create mode 100644 src/chapter3/NonAtomicDoubleUpdates.java create mode 100644 src/chapter3/Publication.java create mode 100644 src/chapter3/Visibility.java create mode 100644 src/chapter3/VolatileCretan.java create mode 100644 src/chapter3/VolatileStatus.java create mode 100644 src/chapter4/Atomicity.java create mode 100644 src/chapter4/Car.java create mode 100644 src/chapter4/Ownership.java create mode 100644 src/chapter4/Ownership2.java create mode 100644 src/chapter5/ShowMeTheValues.java create mode 100644 src/chapter5/juc/HashMapTest.java create mode 100644 src/chapter6/CachedThreadPool.java create mode 100644 src/chapter6/CompletionServiceExample.java create mode 100644 src/chapter6/FixedThreadPoolWebserver.java create mode 100644 src/chapter6/Shutdown.java create mode 100644 src/chapter6/ShutdownNow.java create mode 100644 src/chapter6/SingleThreadExecutor.java create mode 100644 src/chapter6/futures/CancelledFuture.java create mode 100644 src/chapter6/futures/ExceptionalFuture.java create mode 100644 src/chapter6/futures/TheFuture.java create mode 100644 src/chapter7/TrickyTaskCancellation.java create mode 100644 src/common/NotThreadSafe.java create mode 100644 src/common/TestHarness.java create mode 100644 src/common/ThreadSafe.java create mode 100644 src/sleepers/Sleeper1.java create mode 100644 src/sleepers/Sleeper2.java create mode 100644 src/sleepers/Sleeper3a.java create mode 100644 src/sleepers/Sleeper3b.java create mode 100644 src/sleepers/Sleeper4.java diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..15a15b2 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..0548357 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..287a49d --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml new file mode 100644 index 0000000..e96534f --- /dev/null +++ b/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..1bf09db --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,1057 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + shut + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +