Вопросы с тегом «concurrency»

180
Как синхронизированные статические методы работают в Java и можно ли использовать их для загрузки объектов Hibernate?

Если у меня есть класс util со статическими методами, которые будут вызывать функции Hibernate для выполнения базового доступа к данным. Мне интересно, если создание метода synchronizedявляется правильным подходом для обеспечения безопасности потока. Я хочу это, чтобы предотвратить доступ...

180
Почему создание темы считается дорогой?

В руководствах по Java написано, что создание потока стоит дорого. Но почему именно это дорого? Что именно происходит, когда создается поток Java, что делает его создание дорогим? Я принимаю это утверждение как правду, но мне просто интересна механика создания потоков в JVM. Поток жизненного цикла...

178
В чем разница между параллелизмом, параллелизмом и асинхронными методами?

Параллельность - это выполнение двух задач параллельно в разных потоках. Однако асинхронные методы выполняются параллельно, но в одном потоке. Как это достигается? Кроме того, как насчет параллелизма? Каковы различия между этими 3...

160
Параллелизм Java: защелка обратного отсчета против циклического барьера

Я читал через API java.util.concurrent и обнаружил, что CountDownLatch: Средство синхронизации, позволяющее одному или нескольким потокам дождаться завершения набора операций, выполняемых в других потоках. CyclicBarrier: Средство синхронизации, которое позволяет всем потокам ожидать друг друга,...

159
Что такое тупик?

При написании многопоточных приложений одной из наиболее распространенных проблем являются взаимоблокировки. Мои вопросы к сообществу: Что такое тупик? Как вы их обнаруживаете? Вы справляетесь с ними? И, наконец, как вы предотвращаете их появление?...

156
Итерация значений ConcurrentHashMap потокобезопасна?

В javadoc для ConcurrentHashMap есть следующее: Операции извлечения (включая get) обычно не блокируются, поэтому могут перекрываться с операциями обновления (включая put и remove). Извлечения отражают результаты самых последних завершенных операций обновления, проводимых с момента их появления. Для...

151
Безопасно ли использовать HttpClient одновременно?

Во всех примерах, которые я могу найти HttpClient, он используется для разовых вызовов. Но что, если у меня постоянная клиентская ситуация, когда несколько запросов могут быть сделаны одновременно? В принципе, безопасно ли вызывать client.PostAsync2 потока одновременно против одного и того же...

145
Являются ли несинхронизированные статические методы потокобезопасными, если они не изменяют статические переменные класса?

Мне было интересно, если у вас есть статический метод, который не синхронизируется, но не изменяет статические переменные, это потокобезопасно? А что, если метод создает локальные переменные внутри него? Например, является ли следующий код потокобезопасным? public static String[] makeStringArray(...

145
iPhone - главная тема Grand Central Dispatch

Я успешно использовал грандиозную центральную диспетчеризацию в своих приложениях, но мне было интересно, каково реальное преимущество использования чего-то подобного: dispatch_async(dispatch_get_main_queue(), ^{ ... do stuff или даже dispatch_sync(dispatch_get_main_queue(), ^{ ... do stuff Я имею...

143
Безопасно ли получать значения из java.util.HashMap из нескольких потоков (без изменений)?

Есть случай, когда карта будет построена, и после инициализации она больше никогда не будет изменена. Однако к нему можно будет получить доступ (только с помощью get (key)) из нескольких потоков. Насколько безопасно использовать java.util.HashMapтакой способ? (В настоящее время я с удовольствием...

142
Гринлет против. Потоки

Я новичок в gevents и greenlets. Я нашел хорошую документацию о том, как с ними работать, но ни одна из них не дала мне обоснования того, как и когда мне следует использовать гринлеты! В чем они действительно хороши? Стоит ли использовать их в прокси-сервере или нет? Почему не темы? Я не уверен в...

142
Хороший пример лайвлока?

Я понимаю, что такое livelock, но мне было интересно, есть ли у кого-нибудь хороший пример этого кода? И под «основанным на коде» я не имею в виду «двух людей, пытающихся обойти друг друга в коридоре». Если я прочитаю это снова, то потеряю обед....

135
Различные типы поточно-безопасных наборов в Java

Кажется, есть много разных реализаций и способов генерирования потоковобезопасных наборов в Java. Некоторые примеры включают 1) CopyOnWriteArraySet 2) Collections.synchronizedSet (Set set) 3) ConcurrentSkipListSet 4) Collections.newSetFromMap (новый ConcurrentHashMap ()) 5) Другие множества,...

134
Какой алгоритм параллельной сортировки имеет лучшую среднюю производительность?

Сортировка занимает O (n log n) в последовательном случае. Если у нас будет O (n) процессоров, мы будем надеяться на линейное ускорение. O (log n) параллельных алгоритмов существуют, но они имеют очень высокую константу. Они также не применимы к обычному оборудованию, у которого нет даже около O...

132
Какую реализацию параллельной очереди следует использовать в Java?

Из JavaDocs: ConcurrentLinkedQueue является подходящим выбором , когда много потоков будет общий доступ к общей коллекции. Эта очередь не допускает пустых элементов. ArrayBlockingQueue - это классический «ограниченный буфер», в котором массив фиксированного размера содержит элементы, вставленные...

131
.NET - блокировка словаря против ConcurrentDictionary

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

131
Когда использовать volatile с многопоточностью?

Если есть два потока, обращающихся к глобальной переменной, то во многих руководствах говорится, что переменная должна быть изменчивой, чтобы компилятор не кэшировал переменную в регистре и, таким образом, не обновлялся правильно. Однако два потока, оба обращающиеся к общей переменной, - это то,...