LINUX.ORG.RU

История изменений

Исправление vertexua, (текущая версия) :

1) В Java очень строго и детально описаная модель памяти, работающая на любом железе одинаково. По крайней мере согласно правилам в тех местах где даются гарантии

2) Обычно треды используют где уверены что необходима постоянная работа этого треда. Но в 90% случаях все думают в терминах выполнения задач (task) паралельно. И запускают не треды, а просто отправляют Runnable или лямбду в ExecutorService. Это быстрее, дешевле, управляемее и короче

3) В Java очень много готовых примитивов, много из них lock-free. Лучше поискать готовую concurrent lock free структуру данных, чем lock с обычным Map. Лучше использовать готовые atomics или даже LongAdder, чем городить свой велосипед.

4) Для многих сценариев можно применить Fork-Join Pool - более умная абстракция для параллелизма, умеет предотвращать всякие голодания потоков, когда одна задача вроде-как блокирующе ждет другую

Исправление vertexua, :

1) В Java очень строго и детально описаная модель памяти, работающая на любом железе одинаково. По крайней мере согласно правилам в тех местах где даются гарантии

2) Обычно треды используют где уверены что необходима постоянная работа этого треда. Но в 90% случаях все думают в терминах выполнения задач (task) паралельно. И запускают не треды, а просто отправляют Runnable или лямбду в ExecutorService. Это быстрее, дешевле и короче

3) В Java очень много готовых примитивов, много из них lock-free. Лучше поискать готовую concurrent lock free структуру данных, чем lock с обычным Map. Лучше использовать готовые atomics или даже LongAdder, чем городить свой велосипед.

4) Для многих сценариев можно применить Fork-Join Pool - более умная абстракция для параллелизма, умеет предотвращать всякие голодания потоков, когда одна задача вроде-как блокирующе ждет другую

Исправление vertexua, :

1) В Java очень строго и детально описаная модель памяти, работающая на любом железе одинаково. По крайней мере согласно правилам в тех местах где даются гарантии

2) Обычно треды используют где уверены что необходима постоянная работа этого треда. Но в 90% случаях все думают в терминах выполнения задач (task) паралельно. И запускают не треды, а просто отправляют Runnable или лямбду в ExecutorService.

3) В Java очень много готовых примитивов, много из них lock-free. Лучше поискать готовую concurrent lock free структуру данных, чем lock с обычным Map. Лучше использовать готовые atomics или даже LongAdder, чем городить свой велосипед.

4) Для многих сценариев можно применить Fork-Join Pool - более умная абстракция для параллелизма, умеет предотвращать всякие голодания потоков, когда одна задача вроде-как блокирующе ждет другую

Исходная версия vertexua, :

1) В Java очень строго и детально описаная модель памяти, работающая на любом железе одинаково. По крайней мере согласно правилам в тех местах где даются гарантии

2) Обычно треды используют где уверены что необходима постоянная работа этого треда. Но в 90% все думают в терминах выполнения задач (task) паралельно. И запускают не треды, а просто отправляют Runnable или лямбду в ExecutorService.

3) В Java очень много готовых примитивов, много из них lock-free. Лучше поискать готовую concurrent lock free структуру данных, чем lock с обычным Map. Лучше использовать готовые atomics или даже LongAdder, чем городить свой велосипед.

4) Для многих сценариев можно применить Fork-Join Pool - более умная абстракция для параллелизма, умеет предотвращать всякие голодания потоков, когда одна задача вроде-как блокирующе ждет другую