diff --git a/logs/app.log b/logs/app.log new file mode 100644 index 00000000..2d4c17be --- /dev/null +++ b/logs/app.log @@ -0,0 +1,40 @@ +INFO core.basesyntax.Counter:12 Before decrementing, Thread # 1, counter value 20 +INFO core.basesyntax.Counter:17 After decrementing, Thread # 1, counter value 19 +INFO core.basesyntax.Counter:12 Before decrementing, Thread # 20, counter value 19 +INFO core.basesyntax.Counter:17 After decrementing, Thread # 20, counter value 18 +INFO core.basesyntax.Counter:12 Before decrementing, Thread # 19, counter value 18 +INFO core.basesyntax.Counter:17 After decrementing, Thread # 19, counter value 17 +INFO core.basesyntax.Counter:12 Before decrementing, Thread # 18, counter value 17 +INFO core.basesyntax.Counter:17 After decrementing, Thread # 18, counter value 16 +INFO core.basesyntax.Counter:12 Before decrementing, Thread # 17, counter value 16 +INFO core.basesyntax.Counter:17 After decrementing, Thread # 17, counter value 15 +INFO core.basesyntax.Counter:12 Before decrementing, Thread # 16, counter value 15 +INFO core.basesyntax.Counter:17 After decrementing, Thread # 16, counter value 14 +INFO core.basesyntax.Counter:12 Before decrementing, Thread # 15, counter value 14 +INFO core.basesyntax.Counter:17 After decrementing, Thread # 15, counter value 13 +INFO core.basesyntax.Counter:12 Before decrementing, Thread # 14, counter value 13 +INFO core.basesyntax.Counter:17 After decrementing, Thread # 14, counter value 12 +INFO core.basesyntax.Counter:12 Before decrementing, Thread # 13, counter value 12 +INFO core.basesyntax.Counter:17 After decrementing, Thread # 13, counter value 11 +INFO core.basesyntax.Counter:12 Before decrementing, Thread # 12, counter value 11 +INFO core.basesyntax.Counter:17 After decrementing, Thread # 12, counter value 10 +INFO core.basesyntax.Counter:12 Before decrementing, Thread # 11, counter value 10 +INFO core.basesyntax.Counter:17 After decrementing, Thread # 11, counter value 9 +INFO core.basesyntax.Counter:12 Before decrementing, Thread # 10, counter value 9 +INFO core.basesyntax.Counter:17 After decrementing, Thread # 10, counter value 8 +INFO core.basesyntax.Counter:12 Before decrementing, Thread # 9, counter value 8 +INFO core.basesyntax.Counter:17 After decrementing, Thread # 9, counter value 7 +INFO core.basesyntax.Counter:12 Before decrementing, Thread # 8, counter value 7 +INFO core.basesyntax.Counter:17 After decrementing, Thread # 8, counter value 6 +INFO core.basesyntax.Counter:12 Before decrementing, Thread # 7, counter value 6 +INFO core.basesyntax.Counter:17 After decrementing, Thread # 7, counter value 5 +INFO core.basesyntax.Counter:12 Before decrementing, Thread # 6, counter value 5 +INFO core.basesyntax.Counter:17 After decrementing, Thread # 6, counter value 4 +INFO core.basesyntax.Counter:12 Before decrementing, Thread # 5, counter value 4 +INFO core.basesyntax.Counter:17 After decrementing, Thread # 5, counter value 3 +INFO core.basesyntax.Counter:12 Before decrementing, Thread # 4, counter value 3 +INFO core.basesyntax.Counter:17 After decrementing, Thread # 4, counter value 2 +INFO core.basesyntax.Counter:12 Before decrementing, Thread # 3, counter value 2 +INFO core.basesyntax.Counter:17 After decrementing, Thread # 3, counter value 1 +INFO core.basesyntax.Counter:12 Before decrementing, Thread # 2, counter value 1 +INFO core.basesyntax.Counter:17 After decrementing, Thread # 2, counter value 0 diff --git a/src/main/java/core/basesyntax/Counter.java b/src/main/java/core/basesyntax/Counter.java index 4af46bd4..cb9a0e33 100644 --- a/src/main/java/core/basesyntax/Counter.java +++ b/src/main/java/core/basesyntax/Counter.java @@ -5,18 +5,16 @@ public class Counter { private static final Logger logger = LogManager.getLogger(Counter.class); - private static final String MESSAGE = "%20s, Thread # %2s, counter value %2d"; - private int value; - public Counter(int value) { - this.value = value; - } + private int value = 20; + + public synchronized void decrement() { + logger.info("Before decrementing, Thread # {}, counter value {}", + Thread.currentThread().getName(), value); - public void decreaseValue() { - logger.info(String.format(MESSAGE, - "Before decrementing", Thread.currentThread().getName(), value)); value--; - logger.info(String.format(MESSAGE, - "After decrementing", Thread.currentThread().getName(), value)); + + logger.info("After decrementing, Thread # {}, counter value {}", + Thread.currentThread().getName(), value); } } diff --git a/src/main/java/core/basesyntax/Main.java b/src/main/java/core/basesyntax/Main.java index 48a2c730..04055eef 100644 --- a/src/main/java/core/basesyntax/Main.java +++ b/src/main/java/core/basesyntax/Main.java @@ -1,10 +1,18 @@ package core.basesyntax; 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(); + public static void main(String[] args) throws InterruptedException { + Counter counter = new Counter(); + + Thread[] threads = new Thread[20]; + + for (int i = 0; i < 20; i++) { + threads[i] = new MyThread(counter, String.valueOf(i + 1)); + threads[i].start(); + } + + for (Thread thread : threads) { + thread.join(); } } } diff --git a/src/main/java/core/basesyntax/MyThread.java b/src/main/java/core/basesyntax/MyThread.java index e20649e6..767e39ec 100644 --- a/src/main/java/core/basesyntax/MyThread.java +++ b/src/main/java/core/basesyntax/MyThread.java @@ -10,6 +10,6 @@ public MyThread(Counter counter, String name) { @Override public void run() { - counter.decreaseValue(); + counter.decrement(); } }