Ответ зависит от того, как вы создаете свои исполняемые файлы. Здесь много чего происходит, поэтому давайте упростим. Скажем, у нас есть очень большой набор из n чисел, которые мы хотим сложить. Мы можем разделить набор на два и создать 2 потока, когда они возвращаются, мы просто суммируем два результата. Поскольку мы могли бы разделить набор на две части и суммировать в конце, нет ничего общего, все безопасно для потоков.
Теперь предположим, что мы хотим знать, сколько из наших n чисел было суммировано, когда они работают. Нам нужен общий счетчик, который каждый поток может увеличивать как сумму двух потоков. Таким образом, если счетчик равен 100 и оба потока пытаются увеличить его в одно и то же время, оба потока будут читать 100, добавить 1 и вернуть 101 в память, новый счет будет равен 101, но на самом деле 102 числа были суммированы. Для общих переменных, таких как наш счетчик, нам нужно убедиться, что только один поток одновременно имеет доступ, если они записывают в него.
В вашем случае, если вы отправляете один и тот же список или карту двум потокам, у вас возникнет проблема, поскольку списки и карты передаются по ссылке или адрес в памяти - это то, что отправляется в новый поток, поэтому оба могут попытаться изменить их в то же время. Тем не менее, если вы перед тем, как отправить его, разделите свой список и отобразите на отдельные значения, все будет в порядке.