Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Приоритетно приобрести блокировку


Автор: Alexey91 28.8.2013, 20:40
Здравствуйте!

Есть общий объект, который используют несколько нитей. Естественно, для изменения его состояния они приобретают блокировку. 
Но мне нужно сделать так, чтобы одна нить из этого множества приоритетно приобретала блокировку.
То есть, если множество нитей ожидают приобретения блокировки, то именно эта приоритетная нить точно ее приобретет после того как блокировка освободится, а не какая еще из толпы ожидающих.

Как это можно сделать?

Автор: Alexey91 28.8.2013, 20:56
Почему возникла такая необходимость...

существует таблица в базе данных.

Определенная нить (пусть будет нить-загрузчик) периодически проверяет наличие новых записей в таблице.
И если записи появились, то сохраняет записи из таблицы в объект storage. И этот storage
периодически пополняется нитью-загрузчиком. С другой стороны существуют нити-обработчики,
которые забирают себе записи из storage, и осуществляют с ними какие-то действия.

Я думаю, все понимают, что storage - это разделяемый объект. Его видят и нити-обработчики, и 
нить-загрузчик.

Задача в том, чтобы было как можно меньше простоев.
Если нить-загрузчик узнала, что появились новые записи в таблице, то она
не должна долго ожидать того, когда освободится объект storage, чтобы поместить в него новые записи. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)