Ну, сам класс не является потокобезопасным. Это не обязательно проблема, если это задокументировано и наблюдается в коде. Если это не так, вы можете потерять ссылки на объекты Thread, которые будут работать параллельно, если два метода получат одновременно метод start ().
Флаги, используемые в качестве семафоров, также, конечно, должны быть нестабильными.
API класса немного странный. Вы реализуете Runnable, говоря другим классам «используйте мой метод run для вызова меня», но затем имитируете метод start полного объекта Thread. Вы можете скрыть метод run внутри внутреннего класса. В противном случае это несколько сбивает с толку, как предполагается использовать объект.
И, как всегда, любая схема, которая включает в себя слова new Thread()
, а не использование пула, несколько абстрактна. Хотелось бы знать о том, что вы на самом деле делаете с этим, чтобы действительно разумно прокомментировать это.