Потокобезопасный означает, что объект может использоваться многими потоками одновременно и при этом быть правильным 1
Поток враждебен означает, что объект что-то делает(изменяет статическое состояние, локальное хранилище потока и т. д.), что препятствует его поточной безопасности.
Потоковая совместимость означает не поточная безопасность , но не нитьhostile - поэтому для обеспечения безопасности потока пользователь должен выполнить синхронизацию самостоятельно
1 Но определение правильности немного различается ...
Java в теории и на практике определяет это в соответствии со спецификацией класса.
Джефф Ромер в Google и Википедии определяют это как просто отсутствие гонок данных.
Я обычно надеюсь, что это означает отсутствие сбоев, тупиков или других неожиданностей.