Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Задачка по синхронизации потоков. Помогите решить. / 2 сообщений из 2, страница 1 из 1
24.09.2007, 13:58:49
    #34821354
Vetal
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка по синхронизации потоков. Помогите решить.
Всем привет!

Вот, встала тут передо мной следующая задачка:
Есть два метода:
void f1(){
// начало f1
...

// синхрочасть метода f1
...

// конец of f1
...
}

void f2(){
// начало f2
...

// синхрочасть метода f2
...

// конец f2
...
}

Так вот, задача следующая - нужно сделать так, чтобы синхрочасти методов f1 и f2 не могли выполняться параллельно, но при этом нужно разрешать выполняться параллельно синхрочастям метода f1.

Попробую еще сказать это и другими словами:
1) синхрочасти метода f1 должны иметь возможность выполняться параллельно.
2) перед синхрочастью метода f2 нужно подождать, пока закончатся все синхрочасти метода f1. В момент такого ожидания новые синхрочасти метода f1 не должны начинаться, а должны ожидать окончания выполнения синхрочасти метода f2.

Как это можно сделать? Подскажите пожалуйста!

Всем заранее спасибо!
...
Рейтинг: 0 / 0
24.09.2007, 15:08:55
    #34821660
TiG
TiG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка по синхронизации потоков. Помогите решить.
Разделяемая блокировка. Предлагаю воспользоваться фичами java.util.concurrent.locks, думаю ReentrantReadWriteLock это то, что вам нужно.
Ну и если очень хочется, можно то же самое реализовать и самому - оч удобно использовать классы java.util.concurrent.atomic. Хотя собсно основная идея там будет та же. На эту тему можете почитать Java theory and practice: Going atomic . Ксати на developerWorks есть еще несколько вполне доходчивых статей про фичи java.util.concurrent.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Задачка по синхронизации потоков. Помогите решить. / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]