Плохо ли программировать инициализацию двух потоков с одним и тем же экземпляром работоспособного объекта?
Не специально.Однако, если у экземпляра Runnable
есть поля экземпляра, вам необходимо убедиться, что весь доступ к полям потока правильно синхронизирован, и это усложнит код.
Какая разница для инициализации с отдельными экземплярами работоспособного объекта и имеет ли какое-либо отношение производительность к общему расположению памяти для одного и того же экземпляра работоспособного объекта?
Память, сохраненная при совместном использованииRunnable
экземпляр между несколькими потоками незначителен ... если только Runnable
не содержит значительного количества данных экземпляра.(И если это произойдет, есть вероятность, что это сделает экземпляр не доступным для совместного использования.)
Ваш класс H
является примером, в котором совместное использование экземпляров безопасно, но бессмысленно, поскольку экономия памятинезначительный.(Объект Runnable
без полей экземпляра занимает примерно от 8 до 16 байт, в зависимости от платформы.)