From fecafaf6c751ee78261345888b598a9e6fb666c5 Mon Sep 17 00:00:00 2001 From: Jim Martens Date: Fri, 19 May 2017 11:37:00 +0200 Subject: [PATCH] Made PersistenceManager thread safe Signed-off-by: Jim Martens --- 04/lib/annotations-java8.jar | Bin 0 -> 25243 bytes 04/src/PersistenceManager.java | 18 +++++++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) create mode 100644 04/lib/annotations-java8.jar diff --git a/04/lib/annotations-java8.jar b/04/lib/annotations-java8.jar new file mode 100644 index 0000000000000000000000000000000000000000..82160215b96a09d5b99f422e86492422528f679c GIT binary patch literal 25243 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 literal 0 HcmV?d00001 diff --git a/04/src/PersistenceManager.java b/04/src/PersistenceManager.java index 80a2f37..6164cd1 100644 --- a/04/src/PersistenceManager.java +++ b/04/src/PersistenceManager.java @@ -1,20 +1,28 @@ +import org.jetbrains.annotations.Contract; + /** * Persistence manager using the Singleton pattern. */ public class PersistenceManager { - private static PersistenceManager instance = null; + private final static PersistenceManager instance; + + static { + try { + instance = new PersistenceManager(); + } + catch (Throwable e) { + throw new RuntimeException(e.getMessage()); + } + } /** * Returns an instance of the persistence manager. * @return instance */ + @Contract(pure = true) public static PersistenceManager getInstance() { - if (instance == null) { - instance = new PersistenceManager(); - } - return instance; }