Комментарии 29
lock-free контейнеры из java.util.concurrent вкупе с work-stealing планировщиком — очень мощное средство data-parallel программирования, спасибо Doug Lea. Одна из самых «красивых» стандартных библиотек, на мой взгляд.
Чего не хватает в java.util.concurrent, дак это класса ConcurrentLinkedHashMap (хотя есть сторонние реализации), который бы позволил эффективно и просто реализовывать кэш со стратегиями типа LRU и прочими.
НЛО прилетело и опубликовало эту надпись здесь
Как то так получилось многослов. В свое оправдание замечу что многие известные мне так называемые синьоры при вопросе «Зачем нужна многопоточность» падают в осадок
НЛО прилетело и опубликовало эту надпись здесь
Тут острая тема, мое мнение — не глупый. На мой взгляд, именно непонимание, какие задачи решает многопоточность (компьютеры, авиация, композиция, паттерны, нормализация, денормализация, ваш вариант) рождает неправильное, неоправданное или вообще бездумное их применение.
Личное мнение (возможно очень субьективное): чем больше человек понимает суть вещей с которыми работает — тем более он для меня синьор и тем более он для меня авторитет, потому что он потратил время и силы чтобы разобраться и способен обосновать принятое решение.
В конце концов есть задачи, только одним из вариантов решения которых есть рименение цифровой вычислительной техники, в то время как другие решения (например, аналоговые устройства) будут дешевле и эффективнее.
Личное мнение (возможно очень субьективное): чем больше человек понимает суть вещей с которыми работает — тем более он для меня синьор и тем более он для меня авторитет, потому что он потратил время и силы чтобы разобраться и способен обосновать принятое решение.
В конце концов есть задачи, только одним из вариантов решения которых есть рименение цифровой вычислительной техники, в то время как другие решения (например, аналоговые устройства) будут дешевле и эффективнее.
Абсолютно нормальный вопрос. Часто задаю его на собеседовании (чтобы избежать флуда сразу скажу, перед собеседованием я заранее извиняюсь за вопросы, которые кандидату могут показаться слишком простыми). Тем не менее часто люди, которые претендуют на позицию senior, отвечают, например: «для генерации отчетов». А когда, например, разговор доходит до I/O операций, вообще не понимают, как это связано с многопоточностью.
К тому же, задать такой вопрос senior'у может начинающий программист. И если синьор при этом выпадет в осадок и не сможет объяснить — грош ему цена.
К тому же, задать такой вопрос senior'у может начинающий программист. И если синьор при этом выпадет в осадок и не сможет объяснить — грош ему цена.
Синьоров по Java надо спрашивать, что такое, как работает и зачем нужны count-down latch, cyclic barrier, blocking queues, и в двух словах как они релизованы. А еще по lock-free алгоритмам в простейших задачах. Типа — напишите класс и метод, который возвращает последовательно все степени двойки, чтобы было thread-safe, NON-synchronized, lock-free.
Как насчет статьи на тему? Если кинете в личку ссылку, обещаю как минимум один плюс :)
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Кто такой «убежденный программист»? Было бы здорово, если бы при переводе никто не пользовался техникой правки автоматического перевода
Посыл хороший, но это введение. Ждем следующих статей!
Можно несколько пожеланий? Было было неплохо, если бы вы затронули:
— count-down latches, cyclic barriers, blocking queues
— Различные виде threadpool-ов, и соответствующих executors
— Java Memory Model в целом (http://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-faq.html), double-checked locking и volatile переменные, с описанием процесса захвата/отпускания мониторов, before-after actions, фиксация / инвалидация кешей потока и так далее :)
— Atomics и как они работают внутри
— Персистентные структуры данных в многотопоточных окружениях
— транзакционная память
что-то меня понесло :) Ну вот что-то такое я бы хотел увидеть в этой серии. С отдельными статьями наверное мог бы помочь.
Можно несколько пожеланий? Было было неплохо, если бы вы затронули:
— count-down latches, cyclic barriers, blocking queues
— Различные виде threadpool-ов, и соответствующих executors
— Java Memory Model в целом (http://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-faq.html), double-checked locking и volatile переменные, с описанием процесса захвата/отпускания мониторов, before-after actions, фиксация / инвалидация кешей потока и так далее :)
— Atomics и как они работают внутри
— Персистентные структуры данных в многотопоточных окружениях
— транзакционная память
что-то меня понесло :) Ну вот что-то такое я бы хотел увидеть в этой серии. С отдельными статьями наверное мог бы помочь.
Тут на книгу наберется ) Кое что из этого уже в процессе. Следующими будут локи и атомики. Дальше посмотрим, но некоторые темы вообще не планировал. Спасибо, постараюсь затронуть по максимуму.
Разрушение небольшого мифа по поводу wait и notify — www.javenue.info/post/91
Может начинающим интересно будет.
Может начинающим интересно будет.
потокобезопасный класс должен также продолжать корректно себя вести в многопоточном окружении без дополнительной синхронизации со стороны вызывающего кода, то есть вышесказанное должно соблюдаться также независимо от того, в какой последовательности операционная система решит чередовать инструкции разных методов классаТолько следует помнить, что синхронизация, во-первых, дорогое удовольствие и может дать в результате катастрофичное падение производительности, а во-вторых, опасная — дедлоки же. Поэтому на практике атомарность и безопасность без дополнительной синхронизации не всегда того стоят.
Мне кажется, что слова «Их несколько» смотрятся очень нелогично там. Есть предложение поменять на «Причин несколько». Спасибо за статью, просто резануло глаз.
«Ну вот, на самом интересном месте ...»
Вторая часть — для прагматиков — будет?
Вторая часть — для прагматиков — будет?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
java.util.concurrent. Часть первая: Зачем и почему?