volatile
— этот модификатор вынуждает потоки отключить оптимизацию доступа и использовать единственный экземпляр переменной. Если переменная примитивного типа — этого будет достаточно для обеспечения потокобезопасности. Если же переменная является ссылкой на объект — синхронизировано будет исключительно значение этой ссылки. Все же данные, содержащиеся в объекте, синхронизированы не будут.synchronized
— это зарезервированное слово позволяет добиваться синхронизации в помеченных им методах или блоках кода.transient
и native
к многопоточности никакого отношения не имеют, первое используется для указания полей класса, которые не нужно сериализовать, а второе — сигнализирует о том, что метод реализован в платформо-зависимом коде.