Skip to content

Commit 307b085

Browse files
committed
done
1 parent 42476ff commit 307b085

3 files changed

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

3+
import java.util.concurrent.atomic.AtomicInteger;
34
import org.apache.logging.log4j.LogManager;
45
import org.apache.logging.log4j.Logger;
56

67
public class Counter {
78
private static final Logger logger = LogManager.getLogger(Counter.class);
89
private static final String MESSAGE = "%20s, Thread # %2s, counter value %2d";
9-
private int value;
10+
private AtomicInteger value;
1011

11-
public Counter(int value) {
12+
public Counter(AtomicInteger value) {
1213
this.value = value;
1314
}
1415

15-
public void decreaseValue() {
16+
public synchronized void decreaseValue() {
1617
logger.info(String.format(MESSAGE,
17-
"Before decrementing", Thread.currentThread().getName(), value));
18-
value--;
18+
"Before decrementing", Thread.currentThread().getName(), value.get()));
19+
value.decrementAndGet();
1920
logger.info(String.format(MESSAGE,
20-
"After decrementing", Thread.currentThread().getName(), value));
21+
"After decrementing", Thread.currentThread().getName(), value.get()));
2122
}
2223
}
Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,24 @@
11
package core.basesyntax;
22

3+
import java.util.ArrayList;
4+
import java.util.List;
5+
import java.util.concurrent.atomic.AtomicInteger;
6+
37
public class Main {
4-
public static void main(String[] args) {
5-
Counter counter = new Counter(20);
8+
public static void main(String[] args) throws InterruptedException {
9+
Counter counter = new Counter(new AtomicInteger(20));
10+
List<MyThread> threads = new ArrayList<>();
611
for (int i = 1; i <= 20; i++) {
7-
new MyThread(counter, String.valueOf(i)).start();
12+
threads.add(new MyThread(counter, String.valueOf(i)));
13+
}
14+
15+
for (MyThread thread : threads) {
16+
thread.start();
17+
try {
18+
Thread.sleep(200);
19+
} catch (InterruptedException e) {
20+
e.printStackTrace();
21+
}
822
}
923
}
1024
}

0 commit comments

Comments
 (0)