
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
24.09.2007, 13:58:49
|
|||
|---|---|---|---|
Задачка по синхронизации потоков. Помогите решить. |
|||
|
#18+
Всем привет! Вот, встала тут передо мной следующая задачка: Есть два метода: void f1(){ // начало f1 ... // синхрочасть метода f1 ... // конец of f1 ... } void f2(){ // начало f2 ... // синхрочасть метода f2 ... // конец f2 ... } Так вот, задача следующая - нужно сделать так, чтобы синхрочасти методов f1 и f2 не могли выполняться параллельно, но при этом нужно разрешать выполняться параллельно синхрочастям метода f1. Попробую еще сказать это и другими словами: 1) синхрочасти метода f1 должны иметь возможность выполняться параллельно. 2) перед синхрочастью метода f2 нужно подождать, пока закончатся все синхрочасти метода f1. В момент такого ожидания новые синхрочасти метода f1 не должны начинаться, а должны ожидать окончания выполнения синхрочасти метода f2. Как это можно сделать? Подскажите пожалуйста! Всем заранее спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.09.2007, 15:08:55
|
|||
|---|---|---|---|
Задачка по синхронизации потоков. Помогите решить. |
|||
|
#18+
Разделяемая блокировка. Предлагаю воспользоваться фичами java.util.concurrent.locks, думаю ReentrantReadWriteLock это то, что вам нужно. Ну и если очень хочется, можно то же самое реализовать и самому - оч удобно использовать классы java.util.concurrent.atomic. Хотя собсно основная идея там будет та же. На эту тему можете почитать Java theory and practice: Going atomic . Ксати на developerWorks есть еще несколько вполне доходчивых статей про фичи java.util.concurrent. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/search_topic.php?author=dr001&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
12ms |
get forum list: |
26ms |
get settings: |
15ms |
get forum list: |
19ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
55ms |
get topic data: |
19ms |
get forum data: |
5ms |
get page messages: |
71ms |
get tp. blocked users: |
3ms |
| others: | 1212ms |
| total: | 1451ms |

| 0 / 0 |
