При этом ускорение программы с помощью многопоточных вычислений на нескольких процессорах ограничено размером последовательной части программы. Это так называемый закон Амдала.
Этот закон гласит следующее — В случае, когда задача разделяется на несколько частей, суммарное время её выполнения на параллельной системе не может быть меньше времени выполнения самого длинного фрагмента.
Согласно этому закону, ускорение выполнения программы за счёт распараллеливания её инструкций на множестве вычислителей, ограничено временем, необходимым для выполнения её последовательных инструкций.
ускорение программы с помощью многопоточных вычислений на нескольких процессорах ограничено размером последовательной части программы. Это так называемый закон Амдала.
как в Java 64-битные long и double значения рассматриваются как два 32-битных значения. Это означает, что 64-разрядная операция записи выполняется как две отдельные 32-разрядные операции. И это значит, что действия с long и double переменными не являются потокобезопасными. Когда несколько потоков получают доступ к long или double значению без синхронизации, это может вызвать проблемы.
Атомарное действие не может остановиться посередине: оно либо происходит полностью, либо вообще не происходит. Никакие промежуточные результаты атомарного действия не видны, пока действие не будет завершено.
Еще раз, если два нестатических метода класса объявлены как synchronized, то в каждый момент времени из разных потоков на одном объекте может быть вызван только один из них.
Либо JVM, либо операционная система базовой платформы определяют, как распределять ресурс процессора среди потоков — задача, известная как планирование потоков. Эта часть JVM или операционной системы, которая выполняет планирование потоков, является планировщиком потоков