Ключова дума синхронизирано, уютна вила блог само за
- Lock защитава код сегмент, което позволява само една нишка в даден момент за извършване на този код.
- Lock управлява нишки, които се опитват да влязат в защитен код сегмент.
- Всяко условие обект контролира потока, който влезе в защитен код сегмент, но които все още не са в състояние да извършват тази дейност.
Заключване и състоянието интерфейси са били добавени към Java SE 5.0, за да даде на програмистите по-висока степен на контрол на ключалки. Въпреки това, в повечето случаи няма да се налага такъв контрол, и можете да използвате механизъм, вграден в медиите език Java.
Още от версия 1.0, всеки Java обект има вътрешен заключване. Ако се използва метод е обявен с ключовата дума, синхронизирани, заключване на обект, за да се защитят целия метод. Това е, за да се позове на този метод, потокът да улови вътрешния обект заключване.
С други думи, както следва:
Както можете да видите, употребата на синхронизирани дума генерира много по-кратък код. Разбира се, за да го разберете, трябва да знаете, че всеки обект има вътрешен заключване, както и че ключалката има вътрешен състояние.
Lock управлява нишки, които се опитват да влязат в синхрон метод. Условия контролират потока, причинено от чакането ().
Синхронизиране методи са относително прости. Въпреки това, начинаещите програмисти често имат проблеми с условията.
Също така е допустимо да се установи, статични методи синхронизирани. Когато се обадите на този метод, той улавя вътрешния ключалката на свързания клас обект.
Например, ако в класа Bank има статичен синхронизиран метод, а след това Bank.class заключване обект се заключва, когато той се нарича. В резултат на това не може да предизвика друг поток и няма друг синхронизирано статичен начин на този клас.
Фиксатори и условия имат някои ограничения:
- Не можете да спрете потока, който се опитва да хване ключалката.
- Вие не можете да определите времето за изчакване, като се опитва да грабне ключалката.
- С единствен състояние в ключалката може да бъде неефективно.
Какво трябва да се използва в кода си - Lock и състоянието предмети или синхронизирани методи? Това са нашите препоръки:
- По-добре е да не се използва всеки Lock / Състояние или ключова дума синхронизирани. В много ситуации, може да използвате един от java.util.concurrent пакет от механизми, които ще направят работата на блокиране за вас.
- Ако синхронизирани дума за вашата ситуация, не забравяйте да го използвате. Ти пишеш по-малко код и ще бъде по-малко вероятно да се правят грешки. Програмата е показано по-долу показва пример с банката, осъществява въз основа на синхронизирани методи.
- Използвайте Lock / Състояние, ако наистина имате нужда от допълнителни функции на тези структури.