16- Adders
Jul 03, 2026 22:41
· 2:09
· English
· Whisper Turbo
· 2 Ke Keiki
E pau kēia hoʻoili i kēia lā.
Hoʻonui no ka mālama mau →
Hōʻike wale
0:03
S…
Speaker 2 (16- Adders)
So atomic objects are great for implementing counters,
0:06
S…
Speaker 2 (16- Adders)
but if you have multiple threads updating a value frequently,
0:10
S…
Speaker 2 (16- Adders)
it's better to use one of the other classes in Java.
0:12
S…
Speaker 2 (16- Adders)
They're faster than atomic types.
0:14
S…
Speaker 2 (16- Adders)
So we have long adder for adding long values
0:18
S…
Speaker 2 (16- Adders)
and double adder.
0:20
S…
Speaker 2 (16- Adders)
Let me show you how they work.
0:22
S…
Speaker 2 (16- Adders)
So we have the same code as before.
0:25
S…
Speaker 2 (16- Adders)
This is the code that has a race condition.
0:27
S…
Speaker 2 (16- Adders)
So when we run this program,
0:30
S…
Speaker 2 (16- Adders)
we see this weird number over here.
0:32
S…
Speaker 2 (16- Adders)
Let's solve this problem using an adder class.
0:35
S…
Speaker 1 (16- Adders)
So in the last video,
0:36
S…
Speaker 2 (16- Adders)
we replaced this integer field with an atomic adder.
0:40
S…
Speaker 2 (16- Adders)
Now we're going to replace this with a long adder.
0:44
S…
Speaker 2 (16- Adders)
And then we set this to a new long adder.
0:48
S…
Speaker 1 (16- Adders)
All right.
0:49
S…
Speaker 2 (16- Adders)
Now in our getter,
0:51
S…
Speaker 2 (16- Adders)
we call the int value method.
0:54
S…
Speaker 2 (16- Adders)
This will return the result as an integer.
0:56
S…
Speaker 2 (16- Adders)
We also have byte value,
0:58
S…
Speaker 1 (16- Adders)
short value,
0:59
S…
Speaker 1 (16- Adders)
double value,
1:00
S…
Speaker 1 (16- Adders)
and so on.
1:01
S…
Speaker 2 (16- Adders)
Internally, this long other object keeps an array of counters that can grow
1:06
S…
Speaker 1 (16- Adders)
on demand.
1:06
S…
Speaker 2 (16- Adders)
So we don't have a single place in memory where our value is stored.
1:10
S…
Speaker 2 (16- Adders)
We have a bunch of array cells each holding a counter value.
1:14
S…
Speaker 2 (16- Adders)
So different threads can modify this counter variables concurrently.
1:18
S…
Speaker 2 (16- Adders)
That's why these other classes are faster than atomic types because
1:22
S…
Speaker 1 (16- Adders)
they allow more throughput.
1:23
S…
Speaker 2 (16- Adders)
So here we can call
1:25
S…
Speaker 2 (16- Adders)
int value method but internally this method is going to call another
1:29
S…
Speaker 2 (16- Adders)
method called sum which is going to add up all these counter values
1:34
S…
Speaker 1 (16- Adders)
and return the result.
1:35
S…
Speaker 2 (16- Adders)
Now the int value will call this method and then convert the result to
1:39
S…
Speaker 1 (16- Adders)
an integer.
1:39
S…
Speaker 2 (16- Adders)
Now in our increment method we call increment.
1:44
S…
Speaker 2 (16- Adders)
We also have add for adding a long value.
1:47
S…
Speaker 2 (16- Adders)
We have decrement,
1:49
S…
Speaker 2 (16- Adders)
we have reset,
1:50
S…
Speaker 1 (16- Adders)
and so on.
1:51
S…
Speaker 2 (16- Adders)
So let's call the increment method.
1:53
S…
Speaker 1 (16- Adders)
That's all we had to do.
1:54
S…
Speaker 2 (16- Adders)
Let's run our program.
1:56
S…
Speaker 2 (16- Adders)
The race condition is gone.
1:59
S…
Speaker 2 (16- Adders)
So if you have multiple threads updating a value frequently,
2:03
S…
Speaker 2 (16- Adders)
prefer the adder classes to atomic types.
I hana ʻia kēia transcript e AI (hoʻomaopopo leo mau). Hiki ke loaʻa nā hewa — e hōʻoia i ka leo mua no ka hoʻohana nui. Ka'ōlelo aʻo AI
Hōʻuluʻulu
Kaomi Summarize e hana i ka AI mahele o kēia transcript.
E hōʻuluʻulu ana...
E nīnau i ka AI e pili ana i kēia transcript
E nīnau i kekahi mea e pili ana i kēia transcript - e loaʻa ana ka AI i nā ʻāpana pili a me ka pane.