Лучше всего просто взять интересующий объект, передать его в рабочий поток и не ссылаться на него в основном потоке после запуска рабочего потока.
enter scope
create object
pass the object to the processing thread
start the processing thread
exist scope
// the object is no longer visible/used/referenced
Самое важное, на что нужно обратить внимание: если ваш основной поток не собирается делить объект с рабочим потоком, то не имеет значения, если вы создаете объект в основном потоке, создаете его в рабочем потоке, копируете сначала объект, а затем запустить поток или запустить поток и скопировать объект ... важно то, что вы НЕ делите объект между двумя потоками. То, как вы это делаете, не имеет значения .
Обновление:
За ваш комментарий ... если вашему главному потоку все еще требуется доступ к изображению в то же время, когда вы обрабатываете его в рабочем потоке getRotatedImage
, то вам нужно будет сделать копию до того, как вы передадите это в рабочем потоке. Если вы пропустите изображение в потоке и попытаетесь скопировать его в потоке, то нет гарантии, что изображение останется неизменным до / во время копирования.