16- Adders
Jul 03, 2026 22:41
· 2:09
· English
· Whisper Turbo
· 2 بلندگوها
اين رونوشت امروز تموم ميشه
ارتقا برای ذخیرهسازی دائمی →
نمایش فقط
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.
این رونوشت توسط AI (شناسایی خودکار گفتار) تولید شد. ممکن است حاوی خطا باشد — برای استفادهٔ حیاتی با صدای اصلی بررسی کنید. سیاست هوش مصنوعی
خلاصه
برای تولید خلاصهای از این رونوشت از هوش مصنوعی ، خلاصه را فشار دهید.
خلاصه کنم...
از هوش مصنوعی در مورد این رونوشت بپرسید
در این روش، هر سؤالی که در مورد این رونوشت پرسیده شود، هوش مصنوعی بخشهای مربوطه را پیدا کرده و پاسخ میدهد.