В общем, задача уже решена (решил не отправлять на проверку, чтобы была возможность прикрепить сюда код) благодаря синхронизации через класс, однако мне неясен один момент. Я решил сделать тест, ведь я не понял, почему нельзя было сделать синхронизацию через this в методе run. По логике, нити ждут входа в блок, если он занят, потом одна нить входит, инкрементирует count, инкрементирует значение массива и выходит. По идее, так должна была создаваться очередь, каждая нить входит, делает действия ранее описанные, выходит, и так по кругу, как очередь (хоть и хаотичная, но очередь). А теперь самое интересное: ......... Thread-1: entered synchronized block. Thread-1: escaped synchronized block. Thread-3: entered synchronized block. Thread-1: entered synchronized block. Thread-3: escaped synchronized block. Thread-1: escaped synchronized block. Thread-2: entered synchronized block. Thread-2: escaped synchronized block. Thread-3: entered synchronized block. Thread-3: escaped synchronized block. Thread-3: entered synchronized block. Thread-3: escaped synchronized block. ......... Каким образом нить 1 прокралась в синхронизированный блок, когда он был заблокирован нитью 3? Почему синхронизированный блок дает сбой?