
Код выше добавляет и удаляет целое число 10 раз в массиве. Поскольку все эти вызовы выполняются параллельно, невозможно предсказать порядок их выполнения. Поскольку добавление и удаление происходят одновременно может быть сбой
Рассмотрим следующий сценарий:
1. Девять блоков add уже выполнены, осталось выполнить только один блок
2. Принимая во внимание, что все 8 блоков удаления выполняются, и в настоящее время выполняются последние два. Таким образом, в этот момент количество элементов будет равно 1
3. Из-за состояния гонки предположим, что последний блок добавления выполняется после двух блоков удаления.
В приведенном выше сценарии, поскольку количество элементов равно 1 и два блока удаления выполняются одновременно, вызов remove два раза для массива со значением 1 приведет к сбою.
Рассмотрим следующий сценарий:
1. Девять блоков add уже выполнены, осталось выполнить только один блок
2. Принимая во внимание, что все 8 блоков удаления выполняются, и в настоящее время выполняются последние два. Таким образом, в этот момент количество элементов будет равно 1
3. Из-за состояния гонки предположим, что последний блок добавления выполняется после двух блоков удаления.
В приведенном выше сценарии, поскольку количество элементов равно 1 и два блока удаления выполняются одновременно, вызов remove два раза для массива со значением 1 приведет к сбою.