Skip to content

Commit 5281347

Browse files
committed
doc update
1 parent 62e1cb2 commit 5281347

File tree

1 file changed

+17
-15
lines changed

1 file changed

+17
-15
lines changed

README.md

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,9 @@ money from user to user.
4444
}
4545
}
4646
```
47-
1. Immutable map of users:
47+
1. Mutable map of users:
4848
```
49-
Map<Integer, User> userMap = Map.of(
50-
1, new User(1, 40),
51-
2, new User(2, 33)
52-
);
49+
userMap = [[1, new User(1, 40)], [2, new User(2, 33)]]
5350
```
5451
1. We want to provide tread-safe read and writes on that map
5552
* we will use `ReadWriteLock` interface
@@ -90,26 +87,31 @@ second one
9087
```
9188
ReadWriteLock lock = new ReentrantReadWriteLock();
9289
LockExecutor executor = new LockExecutor(lock);
93-
94-
var transferred = executor.write(() -> {
90+
91+
executor.write(() -> {
9592
var transfer = PositiveInt.of(15);
96-
return Map.of(1, userMap.get(1).outcome(transfer),
97-
2, userMap.get(2).income(transfer));
93+
userMap.replace(1, userMap.get(1).outcome(transfer));
94+
userMap.replace(2, userMap.get(2).income(transfer));
95+
96+
return Void.class;
9897
});
99-
100-
assertThat(transferred.get(1).getBalance(), is(25));
101-
assertThat(transferred.get(2).getBalance(), is(48));
98+
99+
assertThat(userMap.get(1).getBalance(), is(25));
100+
assertThat(userMap.get(2).getBalance(), is(48));
102101
```
103102
1. We want to sum all balances from all users
104103
```
105104
ReadWriteLock lock = new ReentrantReadWriteLock();
106105
LockExecutor executor = new LockExecutor(lock);
107-
106+
108107
var balanceAll = executor.read(() -> userMap.values()
109108
.stream()
110109
.map(User::getBalance)
111110
.mapToInt(x -> x)
112111
.sum());
113-
112+
114113
assertThat(balanceAll, is(73));
115-
```
114+
```
115+
116+
**Remark: thread-safety is guarantee under assumption, that
117+
all reads and writes will go through the same executor object.**

0 commit comments

Comments
 (0)