Почему вы думаете, что это будет быстрее? Раскручивание потока и добавление синхронизированных вызовов - ОГРОМНАЯ синхронизация времени. Если вы не можете избежать синхронизированного ключевого слова, я настоятельно рекомендую однопоточное решение.
Вы можете избежать их различными способами - например, гарантируя, что данная переменная записывается только одним потоком, даже если она читается другими, или действуя как функциональный язык, и сделав все переменные окончательными, используя Recursion для хранилище переменных (сомнительно, трудно представить, что это что-то ускорит).
Однако, если вам действительно нужно быть быстрым, я недавно обнаружил некоторые очень нелогичные вещи из моей собственной попытки найти быстрое решение ...
- Статические методы не помогали над реальными экземплярами классов.
- Разбиение кода на более мелкие классы и методы на самом деле ПОВЫШЕННОЙ скоростью.
- Финальные методы помогли больше, чем я думал, что они будут
- Однажды я заметил, что добавление вызова метода помогло ускорить процесс
- Не акцентируйте внимание на одноразовом распределении классов или распределении данных, но избегайте выделения объектов в циклах (это очевидно, но я думаю, что это наиболее важно)
Что мне удалось понять, так это то, что компилятор чрезвычайно умен в оптимизации и настроен на оптимизацию «идеального» Java-кода. Статические методы далеко не идеальны - они являются своего рода контр-паттерном .. одним из самых.
Я предлагаю вам написать самый понятный и лучший из возможных ОО-кодов, который на самом деле работает правильно в качестве эталона, а затем рассчитайте время и начните попытки настройки, чтобы ускорить его.