Демонстрационные проблемы для практики многопоточности

Я хочу вернуть пустой вектор, который можно проверить с помощью Collections.isEmpty

Хотите ли вы вернуть пустой вектор или вы хотите, чтобы Collections.isEmpty () возвратил Значение true, если передан пустой вектор?
Как правило, возвращение пустого вектора будет означать отсутствие ошибки, но пустой результат - вам следует рассмотреть возможность создания (проверенного) исключения для ошибки - что приведет к заключению договора между методом и его звонящий яснее. Если позднее вы захотите, чтобы метод мог возвращать пустой вектор для указания пустого результата (и без ошибок), вы сможете сделать это без изменения всего вызывающего кода.

6
задан moogs 15 January 2009 в 11:27
поделиться

7 ответов

Если бы у Вас есть достаточно времени для инвестирования, я рекомендовал бы книгу "Параллелизм: Модели Состояния и Программы Java, 2-й Выпуск" Jeff Magee и Jeff Kramer, John Wiley&Sons 2006

Можно проигнорировать часть Java при использовании некоторого другого языка

Существует язык, используемый для моделирования процессов и параллельных процессов под названием FSP. Требуются некоторое время и энергию, которую инвестируют, чтобы быть опытным на языке. Существует инструмент (LTSA, оба свободны и поддерживаются плагином Eclipse или автономным приложением), который проверяет Ваши модели, и сделайте Вас симпатичной Shure, что Ваша модель корректна с точки зрения параллельного выполнения.

Перевод этого моделирует к Вашим конструкциям языка, затем просто вопрос метода программирования и немногих шаблонов разработки.

2
ответ дан 9 December 2019 в 20:50
поделиться

Большинством проблем учебника, как читатели-писатели, производители-потребители или шумящие философы являются все иллюстрации взаимного исключения. Я предпочел бы моделировать прототип, который является упрощенным приближением большая проблема и разрешение.

У меня есть несколько раз замеченные ситуации, где предотвращение мертвой блокировки - то, что необходимо, и меры по предотвращению мертвой блокировки используются. Это всегда - хорошая идея проанализировать, если Алгоритм банкира удовлетворил бы случаю или нет.

3
ответ дан 9 December 2019 в 20:50
поделиться

Я не уверен, что Вы ищете. Но в ситуации предприятия реального мира, мы обычно используем некоторую платформу обмена сообщениями, когда выполнение потребителей производителей наполняет. Tipically в Java, это - JMS. И можно использовать превосходную Платформу Spring для способствования Вам.

1
ответ дан 9 December 2019 в 20:50
поделиться

Полностью игнорируя Ваш запрос, я предложу, чтобы Вы посмотрели на SEDA (подготовил управляемую событиями архитектуру) как способ думать об установке многопоточного конвейера производителей и потребителей.

2
ответ дан 9 December 2019 в 20:50
поделиться

Честно говоря, много реальных программ многопоточности не делают намного больше, чем чтение/запись некоторого значения (или строка или интервал) - кольцевые буферы (поскольку сетевое соединение, возможно, нуждалось бы), читатели/устройства записи файлов журнала, и т.д.

На самом деле я сказал бы, что, если Вы реализуете (или находите) тело (и универсальный) кольцевой буфер, и затем выполняет всю коммуникацию от потока к потоку через те буферы как единственная контактная точка, это покроет очень значительную часть любого мультипотока, синхронизирующего Вас, возможно, должен был бы сделать. (Если Вы не работаете в совместимой модным словечком среде и должны прикрепить "предприятие", "обмен сообщениями", или безотносительно на список модного словечка..., или Вы пишете систему баз данных или операционную систему.)

(Обратите внимание, что "кольцевой буфер" справедливо термин C-centric, базируемый в относительно непосредственном управлении блоком памяти. Класс Очереди Python реализует тот же основной принцип центральным списком способом, и я уверен, что многочисленные другие языки имеют концептуально подобные конструкции под немного отличающимися именами...),

0
ответ дан 9 December 2019 в 20:50
поделиться

Если Вы работаете с Java вообще (и возможно даже если Вы не), необходимо определенно считать Параллелизм Java На практике.

1
ответ дан 9 December 2019 в 20:50
поделиться

Маленькая книга семафоров - хорошая бесплатная книга. Автор использует уникальный подход: сначала задает проблему, а затем дает подсказки перед ответом. Уровень сложности задач увеличивается постепенно, и книга написана не для какого-то конкретного языка, а охватывает общие концепции многопоточности.

3
ответ дан 9 December 2019 в 20:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: