В дополнение к Джулиусу Дэвису 'у меня есть еще одна проблема, связанная с кодом:
Child child = new Child(parent);
А именно, почему является дочерним элементом в его собственной цепочке, а что будет делать дочерний элемент с родителем?
Если родитель действительно так тривиален, как кажется, тогда дочерний поток не нужен. С другой стороны, если родительский процесс выполняет больше работы после запуска дочернего потока, у вас возникают проблемы с синхронизацией, с которыми вам нужно разобраться. И вы должны разобраться с ними. Закон Мерфи гласит, что любые проблемы с потоками, которые могут произойти, будут . (Corallary: Есть больше возможных проблем с потоками, чем вы знаете, даже если вы эксперт по закону Мерфи.)
РЕДАКТИРОВАТЬ : ОК, дочерний поток вызывает parent.getDataFromChild
. Что этот метод делает с данными? (Вносит ли он какие-либо изменения в объекты, к которым также осуществляется доступ из основного потока?) Поскольку он вызывается из дочернего потока, вам необходимо проверить как родительский, так и дочерний классы на предмет возможных состояний гонки.