Ссылка на метод - это значение. Мы не можем сказать, является ли он потокобезопасным или нет. Больше, чем мы можем сказать, является ли значение 3.14159
потокобезопасным или нет.
Если вы помещаете ссылку на метод в общую переменную, то безопасность потоков зависит от того, как общая переменная используется. Как и любая другая переменная.
Если вы вызываете (вызываете) ссылку на метод, безопасность потоков зависит от того, как был реализован метод / конструктор. Реализация может быть поточно-ориентированной или нет.
Возможные причины, по которым конструктор не является поточно-ориентированным включает :
- с использованием общего состояния c переменная без синхронизации
- публикация
this
до того, как она будет полностью инициализирована (небезопасная публикация) - конструктор, вызывающий метод для некоторого другого объекта, который не является потокобезопасным.
Я спрашиваю метод-конструктор объектов, а не метод, определенный пользователем.
Нет разницы между обычными методами и конструкторами.
Обратите внимание, что оба методы и конструкторы определяются пользователем ... за исключением конструктора без аргументов по умолчанию. (И даже последний не будет поточно-ориентированным, если его конструктор суперклассов не поточно-ориентирован.)