Skip to content

Commit 2e50f1f

Browse files
solution
1 parent 42476ff commit 2e50f1f

4 files changed

Lines changed: 61 additions & 15 deletions

File tree

logs/app.log

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
INFO core.basesyntax.Counter:12 Before decrementing, Thread # 1, counter value 20
2+
INFO core.basesyntax.Counter:17 After decrementing, Thread # 1, counter value 19
3+
INFO core.basesyntax.Counter:12 Before decrementing, Thread # 20, counter value 19
4+
INFO core.basesyntax.Counter:17 After decrementing, Thread # 20, counter value 18
5+
INFO core.basesyntax.Counter:12 Before decrementing, Thread # 19, counter value 18
6+
INFO core.basesyntax.Counter:17 After decrementing, Thread # 19, counter value 17
7+
INFO core.basesyntax.Counter:12 Before decrementing, Thread # 18, counter value 17
8+
INFO core.basesyntax.Counter:17 After decrementing, Thread # 18, counter value 16
9+
INFO core.basesyntax.Counter:12 Before decrementing, Thread # 17, counter value 16
10+
INFO core.basesyntax.Counter:17 After decrementing, Thread # 17, counter value 15
11+
INFO core.basesyntax.Counter:12 Before decrementing, Thread # 16, counter value 15
12+
INFO core.basesyntax.Counter:17 After decrementing, Thread # 16, counter value 14
13+
INFO core.basesyntax.Counter:12 Before decrementing, Thread # 15, counter value 14
14+
INFO core.basesyntax.Counter:17 After decrementing, Thread # 15, counter value 13
15+
INFO core.basesyntax.Counter:12 Before decrementing, Thread # 14, counter value 13
16+
INFO core.basesyntax.Counter:17 After decrementing, Thread # 14, counter value 12
17+
INFO core.basesyntax.Counter:12 Before decrementing, Thread # 13, counter value 12
18+
INFO core.basesyntax.Counter:17 After decrementing, Thread # 13, counter value 11
19+
INFO core.basesyntax.Counter:12 Before decrementing, Thread # 12, counter value 11
20+
INFO core.basesyntax.Counter:17 After decrementing, Thread # 12, counter value 10
21+
INFO core.basesyntax.Counter:12 Before decrementing, Thread # 11, counter value 10
22+
INFO core.basesyntax.Counter:17 After decrementing, Thread # 11, counter value 9
23+
INFO core.basesyntax.Counter:12 Before decrementing, Thread # 10, counter value 9
24+
INFO core.basesyntax.Counter:17 After decrementing, Thread # 10, counter value 8
25+
INFO core.basesyntax.Counter:12 Before decrementing, Thread # 9, counter value 8
26+
INFO core.basesyntax.Counter:17 After decrementing, Thread # 9, counter value 7
27+
INFO core.basesyntax.Counter:12 Before decrementing, Thread # 8, counter value 7
28+
INFO core.basesyntax.Counter:17 After decrementing, Thread # 8, counter value 6
29+
INFO core.basesyntax.Counter:12 Before decrementing, Thread # 7, counter value 6
30+
INFO core.basesyntax.Counter:17 After decrementing, Thread # 7, counter value 5
31+
INFO core.basesyntax.Counter:12 Before decrementing, Thread # 6, counter value 5
32+
INFO core.basesyntax.Counter:17 After decrementing, Thread # 6, counter value 4
33+
INFO core.basesyntax.Counter:12 Before decrementing, Thread # 5, counter value 4
34+
INFO core.basesyntax.Counter:17 After decrementing, Thread # 5, counter value 3
35+
INFO core.basesyntax.Counter:12 Before decrementing, Thread # 4, counter value 3
36+
INFO core.basesyntax.Counter:17 After decrementing, Thread # 4, counter value 2
37+
INFO core.basesyntax.Counter:12 Before decrementing, Thread # 3, counter value 2
38+
INFO core.basesyntax.Counter:17 After decrementing, Thread # 3, counter value 1
39+
INFO core.basesyntax.Counter:12 Before decrementing, Thread # 2, counter value 1
40+
INFO core.basesyntax.Counter:17 After decrementing, Thread # 2, counter value 0

src/main/java/core/basesyntax/Counter.java

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,16 @@
55

66
public class Counter {
77
private static final Logger logger = LogManager.getLogger(Counter.class);
8-
private static final String MESSAGE = "%20s, Thread # %2s, counter value %2d";
9-
private int value;
108

11-
public Counter(int value) {
12-
this.value = value;
13-
}
9+
private int value = 20;
10+
11+
public synchronized void decrement() {
12+
logger.info("Before decrementing, Thread # {}, counter value {}",
13+
Thread.currentThread().getName(), value);
1414

15-
public void decreaseValue() {
16-
logger.info(String.format(MESSAGE,
17-
"Before decrementing", Thread.currentThread().getName(), value));
1815
value--;
19-
logger.info(String.format(MESSAGE,
20-
"After decrementing", Thread.currentThread().getName(), value));
16+
17+
logger.info("After decrementing, Thread # {}, counter value {}",
18+
Thread.currentThread().getName(), value);
2119
}
2220
}
Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,18 @@
11
package core.basesyntax;
22

33
public class Main {
4-
public static void main(String[] args) {
5-
Counter counter = new Counter(20);
6-
for (int i = 1; i <= 20; i++) {
7-
new MyThread(counter, String.valueOf(i)).start();
4+
public static void main(String[] args) throws InterruptedException {
5+
Counter counter = new Counter();
6+
7+
Thread[] threads = new Thread[20];
8+
9+
for (int i = 0; i < 20; i++) {
10+
threads[i] = new MyThread(counter, String.valueOf(i + 1));
11+
threads[i].start();
12+
}
13+
14+
for (Thread thread : threads) {
15+
thread.join();
816
}
917
}
1018
}

src/main/java/core/basesyntax/MyThread.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@ public MyThread(Counter counter, String name) {
1010

1111
@Override
1212
public void run() {
13-
counter.decreaseValue();
13+
counter.decrement();
1414
}
1515
}

0 commit comments

Comments
 (0)