суббота, 5 января 2013 г.

Проблемы конкурентности в Java

1. Race condition (состояние гонки). В этом случае правильности исчисления зависит от случайного стечения обстоятельств в последовательности выполнения частей кода потока.
Это понятие связано с data race и часто между ними ставят равно, но это частный случай  -- в ситуации когда поле пишется и читается разными потоками, при этом каждый считает, что только у него есть доступ к этому полю и никак не ожидает, что оно может измениться извне.


Операции с полями, которые подлежат влиянию из разных потоков, типа check-then-act и read-modify-write всегда должны быть атомарными. Пример первого, когда у нас поле определенного значения мы должны выполнить соответствующие операции, пока мы проверили и начали что-то выполнять оно поменялось, а мы все еще выполняем. Второй вид -это инкримент, пока мы получили значение изменили его, оно уже изменилось, а мы записали результат основанный на старом значении.



Комментариев нет:

Отправить комментарий