..


Спонсоред Линкс

Управљање заједничким подацима у Јави

Чланак који је написао Дамиано Верда
Страна 1 од 2

Можемо размишљати о дељених података као и сваки други послови за обраду података ће бити изложен више страна. Замислите, на пример, продавница нумеричка вредност која представља евро / долар. Имамо програм који периодично проверава шта курс и ажурира вредност променљиве. Један или више других програма ће, међутим, користи ажуриране информације да управља берзанска цена стопу конверзије.

Обратите пажњу како се управљање заједнички, чак и на овом једноставном примеру, треба посебну пажњу. Замислите на пример да, док апликација мора да прочита курс за конверзију, такође је добио од стране другог програма, захтев за промену курса себи.

Који је први извршава? Који курс конверзије ради? Проблем је, чак у неким случајевима мало сложеније, може да буде још жешћи.

Замислите чињеницу да је променљива од интереса није елементарни, али, на пример, се састоји од скупа података. Сада може се вршити само делимични пишу, а затим следи читање од завршетка писања. Трансакције би онда се вршити са скуп вредности мења само делимично, што доводи до бесмислено резултате и стога неприхватљиви.

С обзиром на постојање ове врсте проблема многих програмских језика пружају специфичне алате за управљање заједничким променљивих. Смо у наставку испитати посебно у овој категорији проблема се рукује у програмском језику Јава, један од најчешће коришћених од свих.

Прво морате да разумете како можемо обезбедити да само један програм у исто време, тачније само један конац у времену (један нит је основна компонента процеса или програма, другим речима програм може да се састоји од више нити, Покрени истовремено) може да приступи деле променљиве. Механизам који нам омогућава да понудимо ове гаранције се зове узајамно искључивање.

Узајамно искључивање

Замислите развија класа (или скуп података и метода, који се корисне функције за обраду тог податка) се зове Вариабиле_Цондивиса структуриран на следећи начин:






 јавни час Вариабиле_Цондивиса







 {



   



 еуро_долларо пловак;



   



 еуро_стерлина пловак;





   



 Вариабиле_Цондивиса ()



  



 {



     



 еуро_долларо = 1;



     



 еуро_стерлина = 1;



  



 }





   



 сет_еуро_долларо воид (флоат е_д) = {еуро_долларо е_д;}



   



 сет_еуро_стерлина воид (флоат е_с) = {еуро_стерлина е_с;}





   



 гет_еуро_долларо пловак () {ретурн еуро_долларо;}



   



 гет_еуро_стерлина пловак () {ретурн еуро_стерлина;}







 }



Два исказа, и да еуро_долларо еуро_стерлина, представљајући курс евро / долар и евро / стерлинга и да желимо да деле информације између више програма (или између више тема). Методе развијене вам омогућавају да доделите вредност ових података (и сет_еуро_долларо сет_еуро_стерлина) и чита те вредности (и гет_еуро_долларо гет_еуро_стерлина).

Онда смо идентификовали одређене методе (Вариабиле_Цондивиса), који се зове класа конструктор се извршава и да је стварање сваке Вариабиле_Цондивиса, у овом случају тако што ћете подесити вредности променљивих и еуро_долларо еуро_стерлина су постављени на 1.

Онда смо креирали у нашем програму тип објекта по имену вар Вариабиле_Цондивиса (класа представља скуп ентитета са заједничким карактеристикама, док објекат представља посебан елемент овог сета, што може бити референциране у оквиру програма ) на овај начин:






 Вариабиле_Цондивиса Вариабиле_Цондивиса вар = нев ();



Као што смо сада може да обезбеди да не постоје проблеми у управљању подацима деле вар? Јава језика пружа кључна реч (или кључне речи) синхронизоване, која прихвата било који објекат као параметар. Кроз синхронизоване, можете дефинисати, као што је приказано у примеру, блок кода:





 синхронизовано (ВАР)







 {



  



 / / Синхронизовано блок кода разграничене (ВАР)

  





 }



Пре извођења упутства синхронизовани блоку, било која тема добија катанац на променљиву Вар, или блокирали све даљи приступ истом блоку кода до закључавања је објављен, или док се ради цео блок Пример кода ограничен витичасте заграде.

Другим речима, прва нит (која ми замислимо да позове први) који обавља синхронизовано изјава (ВАР) заправо ствара баријеру која спречава било коју другу нит извршава синхронизовано изјава (ВАР) све док први није завршен извршење синхронизовани блок кода разграничене. У тим блоковима су онда убаци упутства читају и пишу дељених података.

На овај начин је гарантовано узајамно искључење, што обезбеђује да само један конац у једном тренутку приступите дељеном променљиве. Треба напоменути, међутим, да је неопходно да се пажљиво одабрати објекат треба да буде донет као параметар синхронизовани. То мора бити предмет заједничка за све теме које је у којој желите да креирате механизма за узајамно искључење, на пример, као у овом случају, променљиве коју желите да прочитате или мењати.

Замислите, у овом тренутку, који желите да поставите наш програм, тако да нити које желе да читају вредност променљиве вар да се пребацује на чекање и процену резултата тек након првог упдате након њиховог захтева. Замислите да желите да дефинишете механизам синхронизацију између читања и писања.

У истој категорији ...
Е-учење
Линук (курс) Линук (курс)
Комплетан водич за опен-соурце систем. Од 49 €.
ПХП (курс) ПХП (курс)
Цео курс за креирање динамичких веб сајтова. Од 49 €.
Руби и Руби он Раилс (курс) Руби и Руби он Раилс (курс)
Израду софтвера и веб апликација са рубином и РОР. Од 39 €.
Спонсоред Линкс