Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java ME (J2ME) > Синхронизацыя тредов


Автор: Рамирос 15.2.2010, 19:05
Я так понял синхронизировать нада только ОБЬЕКТЫ которые нада ИЗМЕНЯТЬ???
Переменные сихронизировать ненада?

Автор: Zыыыыы 15.2.2010, 19:54
Тут подробно про синхронизацию потоков в java.
http://www.skipy.ru/technics/synchronization.html
И о каких переменных идет речь?

Автор: Рамирос 15.2.2010, 21:56
Ясненько, нащот статеечки, познавательно.
А нащот переменных, то тут берутся переменные примитивных типов.
Нутак как нащот переменных их ненадо синхронизироваить??
нада токо методы или обьекты синхронизировать??

Автор: Zыыыыы 15.2.2010, 22:40
Вот общая форма оператора synchronized
Код

sупсhrопizеd(объект) { 
    // операторы, подлежащие синхронизации 
}


Здесь объект - это ссылка на синхронизируемый объект. Блок synchronized гapaнтирует, что вызов метода объекта произойдет только тоrда, коrда текущий поток успешно войдет в монитор объекта. 

Cинхронизированы могут быть только объекты. Переменные простых типов могут только объявляться и использоваться в блоке(или методе) synchronized, а при объявлении самого блока synchronized в качестве параметра может быть только объект(общение с которым мы собираемся регулировать).

Но можно воспользоваться модификатором volatile. Он указывается перед декларацией членов класса. Модификатор volatile показывает виртуальной машине, что данная переменная может быть изменена другими thread-ами.

Переменная, помеченная ключевым словом volatile, не будет кэшироваться в контексте thread-а, а доступ к ней будет осуществляться так, словно она заключена в блок synchronized. Volitile-переменная читается прямо из основной памяти, исключая регистры и локальную память. Следовательно, такая переменная гарантирует валидное значение для любого потока. 

Ключевое слово volatile может применяться как для объектов, так и для примитивных типов. Кроме того, переменная volatile может быть null. 

P.S. И все же надо гуглить.

Автор: Рамирос 16.2.2010, 01:01
ага...
Zыыыыы, пасиба.

Тоесть переменная с модификатором  volatile никогда не будет исопльзоваться в один момент времени двумя или более нитями?? 

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