The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

13.05.2012 12:18  Обзор средств для поддержки параллелизма в Java

В статье с примерами рассматриваются основные возможности Java в области параллелизма, анализируются проблемы которые поддержка параллелизма призвана решить и приводятся некоторые детали реализации. Большинство из приведенной информации актуально для Java 6 и 7.

  1. Главная ссылка к новости (http://programmersnook.blogspo...)
Автор новости: Ivan Pogudin
Тип: яз. русский / Практикум
Ключевые слова: java, parallel, threads
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Линейный вид | Ajax | Показать все | RSS
 
  • 1.1, Аноним, 13:03, 14/05/2012 [ответить] [смотреть все]
  • +1 +/
    Спасибо, оценю качество статьи, вот еще на тему http www youtube com watch v c... весь текст скрыт [показать]
     
  • 1.2, ДяДя, 15:27, 14/05/2012 [ответить] [смотреть все]  
  • +/
    Суть проблемы Java и многопоточность в том, что все объекты передаются по ссылке. В Erlang, например (и во многих остальных функциональных языках), все объекты передаются по значению. Т.о. нет разделяемых областей памяти и проблем нет.

    P.S.
    Есть http://code.google.com/p/disruptor/ .

    На LMAX на одном сервере 1000000 запросов в секунду обрабатывается. Стандартными средствами намного меньше. И всё из-за ОС, т.к. дорого обходится парковка и пробуждение потоков. Ну, а со стороны Java GC может помешать. В Disruptor потоки не wait-ятся и новые объекты не создаются. Очередь сообщений тоже строго фиксированного размера(кольцевой буфер), что не вызывает сборку мусора для данных объектов.

     
     
  • 2.3, evgeny_t, 16:01, 14/05/2012 [^] [ответить] [смотреть все]  
  • +/
    ну да как только все обекты передаются по значению возникает другая проблема, пропускная способность памяти )
     
     
  • 3.4, user, 16:07, 14/05/2012 [^] [ответить] [смотреть все]  
  • –2 +/
    Rust лишен обоих проблем.
     
  • 2.5, жабабыдлокодер, 16:14, 14/05/2012 [^] [ответить] [смотреть все]  
  • +/
    >  http://code.google.com/p/disruptor/

    Очень интересная штука. Буду знать. Спасибо.

     
  • 2.6, iZEN, 18:50, 14/05/2012 [^] [ответить] [смотреть все]  
  • +1 +/
    > Суть проблемы Java и многопоточность в том, что все объекты передаются по ссылке.

    Протестую! В Java объекты передаются копиями ссылок и ведётся учёт времени жизни этих копий ссылок, а через них — времени жизни объекта, на который они ссылаются.

     
     
  • 3.7, humanoid, 21:40, 14/05/2012 [^] [ответить] [смотреть все]  
  • –1 +/
    ну вообще-то подсчет ссылок дорогая операция, поэтому сборщик работает по другом... весь текст скрыт [показать]
     
     
  • 4.9, iZEN, 22:14, 14/05/2012 [^] [ответить] [смотреть все]  
  • +/
    > ну вообще-то подсчет ссылок дорогая операция

    А я и не говорил про подсчёт. Подсчёт — это частный, далеко не самый эффективный случай УЧЁТА ссылок.

    Объекты в Java передаются копиями ссылок (copy of reference). Ссылки передаются собственными значениями (reference by-value). (Во загнул! Но так оно и есть на самом деле). :)

     
     
  • 5.10, humanoid, 11:25, 15/05/2012 [^] [ответить] [смотреть все]  
  • +/
    >> ну вообще-то подсчет ссылок дорогая операция
    > А я и не говорил про подсчёт. Подсчёт — это частный, далеко
    > не самый эффективный случай УЧЁТА ссылок.
    > Объекты в Java передаются копиями ссылок (copy of reference). Ссылки передаются собственными
    > значениями (reference by-value). (Во загнул! Но так оно и есть на
    > самом деле). :)

    ну тогда извиняюсь если я неправильно понял, что подразумевалось под УЧЁТОМ

     
  • 4.11, ДяДя, 11:52, 15/05/2012 [^] [ответить] [смотреть все]  
  • +/
    Кстати, да. Циклы процессора расходуются впустую, поэтому не для всяких сообщений эффект будет одинаковым. Если очень много мелких сообщений, то проще тратить циклы процессора, чем останавливать поток.
     
     
  • 5.12, ДяДя, 11:57, 15/05/2012 [^] [ответить] [смотреть все]  
  • +/
    А в Erlang, если не путаю, потоки легковесные и на потоки ОС напрямую не мапятся. Если на текущем процессоре ресурсы кончаются, то порождается новый поток ОС, который обслуживает несколько легковесных потоков Erlang-а.  
     
  • 2.8, humanoid, 21:59, 14/05/2012 [^] [ответить] [смотреть все]  
  • +/
    про память уже сказали, плодить каждый раз по объекту при передачи далеко не все... весь текст скрыт [показать]
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor