Ну, это на самом деле должно работать и является одним из обычных методов для реализации этого (то есть, если что-то не работает, возможно, есть ошибка в другой половине вашего кода, которую мы здесь не видим). Но на самом деле нет никакой причины реализовывать что-то подобное самостоятельно (за исключением домашней работы;)), поскольку существует прекрасный параллельный пакет java, в котором есть несколько возможных решений этой проблемы.
Реализация того, что вам нужно, в формате 1: 1 будет BlockingQueue (хорошо, одна из его реализаций - выберите ту, которая лучше всего подходит вашей модели).
Если вам действительно нужно использовать класс, который устарел начиная с Java 1.2 или около того, вы должны опубликовать больше кода, чтобы мы могли выяснить, что именно не так.