From daac9c6fd7667719c5da7ac22ce145951b1bc784 Mon Sep 17 00:00:00 2001 From: Biletska Liudmyla Date: Wed, 1 Oct 2025 21:40:21 +0200 Subject: [PATCH 1/2] feat: Synchronized Counter fix complete and added log file app.log --- logs/app.log | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 logs/app.log diff --git a/logs/app.log b/logs/app.log new file mode 100644 index 00000000..7f4bd14f --- /dev/null +++ b/logs/app.log @@ -0,0 +1,40 @@ +INFO core.basesyntax.Counter:16 Before decrementing, Thread # 14, counter value 20 +INFO core.basesyntax.Counter:16 Before decrementing, Thread # 13, counter value 20 +INFO core.basesyntax.Counter:16 Before decrementing, Thread # 12, counter value 20 +INFO core.basesyntax.Counter:16 Before decrementing, Thread # 19, counter value 20 +INFO core.basesyntax.Counter:16 Before decrementing, Thread # 2, counter value 20 +INFO core.basesyntax.Counter:16 Before decrementing, Thread # 9, counter value 20 +INFO core.basesyntax.Counter:16 Before decrementing, Thread # 6, counter value 20 +INFO core.basesyntax.Counter:19 After decrementing, Thread # 19, counter value 16 +INFO core.basesyntax.Counter:19 After decrementing, Thread # 12, counter value 18 +INFO core.basesyntax.Counter:19 After decrementing, Thread # 9, counter value 14 +INFO core.basesyntax.Counter:16 Before decrementing, Thread # 1, counter value 20 +INFO core.basesyntax.Counter:16 Before decrementing, Thread # 16, counter value 20 +INFO core.basesyntax.Counter:16 Before decrementing, Thread # 10, counter value 20 +INFO core.basesyntax.Counter:16 Before decrementing, Thread # 17, counter value 20 +INFO core.basesyntax.Counter:16 Before decrementing, Thread # 11, counter value 20 +INFO core.basesyntax.Counter:16 Before decrementing, Thread # 15, counter value 20 +INFO core.basesyntax.Counter:19 After decrementing, Thread # 1, counter value 12 +INFO core.basesyntax.Counter:19 After decrementing, Thread # 17, counter value 10 +INFO core.basesyntax.Counter:19 After decrementing, Thread # 10, counter value 9 +INFO core.basesyntax.Counter:16 Before decrementing, Thread # 18, counter value 20 +INFO core.basesyntax.Counter:16 Before decrementing, Thread # 8, counter value 20 +INFO core.basesyntax.Counter:16 Before decrementing, Thread # 5, counter value 20 +INFO core.basesyntax.Counter:16 Before decrementing, Thread # 4, counter value 20 +INFO core.basesyntax.Counter:16 Before decrementing, Thread # 20, counter value 20 +INFO core.basesyntax.Counter:16 Before decrementing, Thread # 3, counter value 20 +INFO core.basesyntax.Counter:16 Before decrementing, Thread # 7, counter value 20 +INFO core.basesyntax.Counter:19 After decrementing, Thread # 18, counter value 6 +INFO core.basesyntax.Counter:19 After decrementing, Thread # 8, counter value 4 +INFO core.basesyntax.Counter:19 After decrementing, Thread # 4, counter value 3 +INFO core.basesyntax.Counter:19 After decrementing, Thread # 11, counter value 8 +INFO core.basesyntax.Counter:19 After decrementing, Thread # 15, counter value 7 +INFO core.basesyntax.Counter:19 After decrementing, Thread # 3, counter value 1 +INFO core.basesyntax.Counter:19 After decrementing, Thread # 16, counter value 11 +INFO core.basesyntax.Counter:19 After decrementing, Thread # 2, counter value 15 +INFO core.basesyntax.Counter:19 After decrementing, Thread # 14, counter value 19 +INFO core.basesyntax.Counter:19 After decrementing, Thread # 6, counter value 13 +INFO core.basesyntax.Counter:19 After decrementing, Thread # 13, counter value 17 +INFO core.basesyntax.Counter:19 After decrementing, Thread # 20, counter value 2 +INFO core.basesyntax.Counter:19 After decrementing, Thread # 5, counter value 5 +INFO core.basesyntax.Counter:19 After decrementing, Thread # 7, counter value 0 From 6c4ab4d8bf2e60f7846ea34c648fac2d95313e31 Mon Sep 17 00:00:00 2001 From: Biletska Liudmyla Date: Wed, 1 Oct 2025 21:42:45 +0200 Subject: [PATCH 2/2] feat: Implement thread-safe Counter with synchronization, correct thread join logic, and add verification log file. --- src/main/java/core/basesyntax/Counter.java | 2 +- src/main/java/core/basesyntax/Main.java | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/core/basesyntax/Counter.java b/src/main/java/core/basesyntax/Counter.java index 4af46bd4..feb1ad7d 100644 --- a/src/main/java/core/basesyntax/Counter.java +++ b/src/main/java/core/basesyntax/Counter.java @@ -12,7 +12,7 @@ public Counter(int value) { this.value = value; } - public void decreaseValue() { + public synchronized void decreaseValue() { logger.info(String.format(MESSAGE, "Before decrementing", Thread.currentThread().getName(), value)); value--; diff --git a/src/main/java/core/basesyntax/Main.java b/src/main/java/core/basesyntax/Main.java index 48a2c730..138e1673 100644 --- a/src/main/java/core/basesyntax/Main.java +++ b/src/main/java/core/basesyntax/Main.java @@ -3,6 +3,7 @@ public class Main { public static void main(String[] args) { Counter counter = new Counter(20); + for (int i = 1; i <= 20; i++) { new MyThread(counter, String.valueOf(i)).start(); }