Synchronize, TCriticalSection, может в новых Дельфи еще что-то добавили.
Еще boolean — atomic, то есть не может быть так, что один поток читает во время записи другим потоком и получает непонятно что. https://stackoverflow.com/a/5481437/964478
Но может быть нужно добавить volatile.
Какой поток их вызвал, тот и выполняет.
Synchronize можно вызывать в любом потоке (в старых версиях надо было проверять не в основном ли сейчас) https://stackoverflow.com/a/29919480/964478
Ну или крит. секции.
Только конечно с тупо геттерами/сеттерами может возникнуть проблема как выше
так что возможно нужен не сеттер, а функция выполняющая всю подобную операцию.
Если два потока обращаются к одной переменной, то могут возникать проблемы как в примере выше. + не все типы atomic (про Integer кстати тоже стоит уточнить какая там ситуация в новых Дельфи, 64бит и т.д.), так что проблемы могут возникнуть даже если один поток просто пишет (без чтения, myvar := 'hello'), а второй читает.
Поэтому такие обращения надо синхронизировать каким-нибудь способом