![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Java2 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 26.4.2006 Репутация: нет Всего: нет |
Народ, подскажи, пожалуйста, где взять хорошую доку по пакету java.util.concurrent.*; и желательно на русском.
|
|||
|
||||
powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
На русском только если в книжке какой искать, а так можно официальную доку почитать.
|
|||
|
||||
Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: нет Всего: 134 |
Можно получить официальную доку самостоятельно. Распоковываем src.zip в папке с jdk и запускаем javadoc. Вуаля. Дока готова.
-------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
Java2 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 26.4.2006 Репутация: нет Всего: нет |
||||
|
||||
Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 14 Всего: 62 |
Java2
Гм, куда уж подробнее чем javadoc и исходный код... |
|||
|
||||
Java2 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 26.4.2006 Репутация: нет Всего: нет |
||||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
API - там как раз описан полностью. Что именно там не описано? -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Java2 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 26.4.2006 Репутация: нет Всего: нет |
Хочется иметь какой-нибудь учебник о том, как этим пользоваться, т.к. в API всё коротко описано.
|
|||
|
||||
mulya |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 3.5.2006 Репутация: нет Всего: нет |
Вот здесь на русском, но без примеров, только описание и в каких ситуациях можно использовать:
.doc документ о java.util.concurent |
|||
|
||||
Java2 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 26.4.2006 Репутация: нет Всего: нет |
Загружается, но не открывается. Пишет ошибку. Может у кого-нибудь ещё есть подробная инфа по java.util.concurent.*, также интересуют ещё сокеты. |
|||
|
||||
Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 14 Всего: 62 |
Java2
Я скачал, это обзорная лекция по Java-технологиям. Все что там есть по твоей теме: • java.util.concurent Этот пакет и его подпакеты добавлены в JDK, начиная с версии 1.5. Он содержит набор классов, реализующих коллекции с различными эффективными моделями синхронизации обращений к ним из нескольких параллельных потоков (коллекции в java.util являются либо полностью синхронизированными, т.е. при работе одного потока с такой коллекцией все остальные стоят, либо не поддерживают корректной работы с несколькими потоками, например, в результате параллельного добавления в множество двух одинаковых элементов может быть создано исключение). Также в этот пакет и его подпакеты входят вспомогательные классы, реализующие различные модели синхронизации параллельных потоков. o ConcurrentHashMap, ConcurrentLinkedQueue — реализуют ассоциативный массив и очередь с эффективными моделями синхронизации o CopyOnWriteArrayList, CopyOnWriteArraySet — реализуют список и множество, копирующие внутренние данные при попытке их изменить. Итераторы таких коллекций перебирают только те элементы, которые присутствовали в коллекции при создании итератора. o CountDownLatch — реализует синхронизационную модель «щеколды» — создается щеколда (с натуральным числом в качестве параметра-счетчика), которая постепенно вынимается с выполнение каких-то операций (как только такая операция выпонена, вызывается метод void countDown(), уменьшающий счетчик). Потоки, которые должны подождать конца выполнения данной цепочки операций, вызывают метод await() и блокируются. Как только щеколда будет вынута (счетчик упадет до нуля), все ожидающие потоки разблокируются и продолжают выполнение. o CyclicBarrier — реализует синхронизационную модель «барьер» — каждый поток из некоторой группы доходит до барьера (созданного с числом потоков в группе в качестве параметра) и ждет, пока все они не дойдут до него (ожидание начинается при вызове await()). Как только число ожидающих потоков достигнет заданного, барьер убирается и все они могут продолжать выполнение. Кроме того, в качестве параметра конструктора можно задать некотоые действия (в виде объекта Runnable), которые будут выполняться после того, как все потоки достигнут барьера, но до их освобождения. o Semaphore — недвоичный семафор. Обеспечивает одновременную работу не более чем некоторого числа потоков. Такой объект создается с параметром-числом (доступных ресурсов), каждый поток, желающий захватить семафор, вызывает метод aquire(), каждый поток, желающий его освободить, вызывает метод release(). Если число захватов сравнилось с заданным при построении значением, каждый очередной захватывающий поток будут приостановлен, пока не семафор не будет освобожден одним из уже захвативших его потоков (после чего только один из ожидающих продолжит выполнение). o ThreadPoolExecutor — реализует пул потоков, предназначенных для обработки асинхронно поступающих заданий. oo void execute(Runnable) — передает пулу на выполнение некотрую задачу oo int getTaskCount() — возвращает примерное число задач, переданных на выполнение oo int getCompletedTaskCount() — возвращает примерное число выполненных задач oo boolean remove(Runnable) — удаляет задачу, если она еще не начала выполняться oo int getMaximumPoolSize() — возвращает макимально возможное число потоков в пуле oo int getPoolSize() — возвращает число потоков в пуле на данный момент • java.util.concurrent.locks Содержит дополнительные реализации моделей синхронизации потоков. o ReenterantLock — двоичный семафор с возможностью многократного захвата одним потоком. oo void lock() захватывает семафор для текущего потока oo void unlock() освобождает семафор, захваченный текущим потоком oo Condition newCondition() — возвращает объект-условие, связанный с данным семафором. Можно использовать это условие для блокировки потоков до его наступления. Поток блокируется вызовом await() у объекта-события и освобождается, когда у того же события будет вызван метод signal() (освобождает только один поток) или signalAll() (освобождает все блокированные потоки). o ReenterantReadWriteLock — реализует модель синхронизации «чтение-запись», позволяющую читать данные одновременно нескольким потокам, а изменять только одному. oo ReenterantReadWriteLock.ReadLock readLock() — возвращает объект для блокировки чтения oo ReenterantReadWriteLock.WriteLock writeLock() — возвращает объект для блокировки записи. Оба объекта реализуют общий интерфейс lock()-unlock() для установки или отключения соответствующих блокировок. |
|||
|
||||
Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 4 Всего: 317 |
Обычный synchronized это обычный бинарный семафор, с возможностью рекурсивно захватить его одним и тем же потоком несколько раз (reentrant lock). Единственное что даёт класс это возможность увидеть всю очередь потоков + возможность поставить более либеральный режим, при котором тот кто ждал наиболее долго получит приоритет. В любом случае ИМХО обычный synchronized лучше, если не нужен экстрафункционал ReenterantLock. ReenterantReadWriteLock - классная фича, которую всегда приходилось делать самому ![]() -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
Java2 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 26.4.2006 Репутация: нет Всего: нет |
все равно ничего не понятно из этого документа.
Дело в том, что это всего мало, и даже API мало, чтобы понимать принципы, а не дергать только методы |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Так тебя интересует Java Concurrent, или общая теория синхронизации потоков? -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Тогда я думаю тебе надо почитать литературу по многопоточному программированию, а уже потом доку по java.util.concurrent.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |