Почему моя операция приращения является атомарной в многопоточном контексте?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Почему моя операция приращения является атомарной в многопоточном контексте?

Сообщение Anonymous »

Я пытаюсь увеличить общий счетчик в 2 раза на 1000 раз

Код: Выделить всё

import kotlin.concurrent.thread

class MultiThreads {
var counter = 0
fun main(){
val thread1 = thread {
(1..1000).forEach { _ ->
counter++
println("T1: $counter")
}
}
val thread2 = thread {
(1..1000).forEach { _ ->
counter++
println("T2: $counter")
}
}
thread1.join()
thread2.join()
println("counter=$counter")
}
}
результат (хвост консоли):
...........
T1: 1998
T1: 1999
T1: 2000
counter=2000
---
AFAIK предполагается будет меньше 2000, не так ли?

Подробнее здесь: https://stackoverflow.com/questions/798 ... ad-context
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»