Первым делом я бы взял, что Авторы рабочие (то есть, возможно, нити), а ручка и бумага ресурсы (то есть без нитей - только используется некоторые рабочие).
Я бы реорганизовал дизайн, чтобы перенести функциональность с Ручек на Авторов. Также я бы попытался смоделировать авторов как Callable
с (или Runnable
с, если нет необходимости возвращать какой-либо результат) вместо потоков, и запустить их в Executor
framework - это дает абстракции более высокого уровня для работы, в результате чего получается более чистый и безопасный код.