|
|
|
Задачка по синхронизации потоков. Помогите решить.
|
|||
|---|---|---|---|
|
#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, 13:58:49 |
|
||
|
Задачка по синхронизации потоков. Помогите решить.
|
|||
|---|---|---|---|
|
#18+
Разделяемая блокировка. Предлагаю воспользоваться фичами java.util.concurrent.locks, думаю ReentrantReadWriteLock это то, что вам нужно. Ну и если очень хочется, можно то же самое реализовать и самому - оч удобно использовать классы java.util.concurrent.atomic. Хотя собсно основная идея там будет та же. На эту тему можете почитать Java theory and practice: Going atomic . Ксати на developerWorks есть еще несколько вполне доходчивых статей про фичи java.util.concurrent. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2007, 15:08:55 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=34821354&tid=2144540]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
30ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 301ms |
| total: | 404ms |

| 0 / 0 |
