Многопоточное программирование в Java
Қосымшада ыңғайлырақҚосымшаны жүктеуге арналған QRRuStore · Samsung Galaxy Store
Huawei AppGallery · Xiaomi GetApps

автордың кітабынан сөз тіркестері  Многопоточное программирование в Java

Анна Курдина
Анна Курдинадәйексөз келтірді1 жыл бұрын
При этом ускорение программы с помощью многопоточных вычислений на нескольких процессорах ограничено размером последовательной части программы. Это так называемый закон Амдала. Этот закон гласит следующее — В случае, когда задача разделяется на несколько частей, суммарное время её выполнения на параллельной системе не может быть меньше времени выполнения самого длинного фрагмента. Согласно этому закону, ускорение выполнения программы за счёт распараллеливания её инструкций на множестве вычислителей, ограничено временем, необходимым для выполнения её последовательных инструкций.
1 Ұнайды
Комментарий жазу
Анна Курдина
Анна Курдинадәйексөз келтірді1 жыл бұрын
ускорение программы с помощью многопоточных вычислений на нескольких процессорах ограничено размером последовательной части программы. Это так называемый закон Амдала.
1 Ұнайды
Комментарий жазу
Теперь третий вид проблемы с живучестью, называется STARVATION или голодание.
Комментарий жазу
В livelock потоки не блокируются, но они находятся в режиме, в котором их выполнение не продвигается дальше, это похоже на пат в шахматной игре.
Комментарий жазу
Поток T1 может получить монитор объекта A одновременно с тем, что поток T2 получит монитор объекта B, а затем каждый поток будет ожидать монитора В и А соответственно неопределенный срок.
Комментарий жазу
Видимость связана с особенностями кэширования памяти и оптимизацией программы в процессе компилирования.
Комментарий жазу
Резюмируя, объявление блока кода синхронным обеспечивает для кода атомарность и видимость.
Комментарий жазу
Это означает, что изменения в volatile переменной всегда видны для других потоков.
Комментарий жазу
Однако если переменная помечена как volatile, то, когда бы поток не считывал значение, он будет считывать ее текущее значение.
Комментарий жазу
Поэтому если один поток изменит значение переменной, то другой поток может не увидеть это изменение, так как будет считывать значение из своего кэша. Это и будет ошибкой согласованности памяти
Комментарий жазу