Ключова дума синхронизирано, уютна вила блог само за

  • Lock защитава код сегмент, което позволява само една нишка в даден момент за извършване на този код.
  • Lock управлява нишки, които се опитват да влязат в защитен код сегмент.
  • Всяко условие обект контролира потока, който влезе в защитен код сегмент, но които все още не са в състояние да извършват тази дейност.

Заключване и състоянието интерфейси са били добавени към Java SE 5.0, за да даде на програмистите по-висока степен на контрол на ключалки. Въпреки това, в повечето случаи няма да се налага такъв контрол, и можете да използвате механизъм, вграден в медиите език Java.

Още от версия 1.0, всеки Java обект има вътрешен заключване. Ако се използва метод е обявен с ключовата дума, синхронизирани, заключване на обект, за да се защитят целия метод. Това е, за да се позове на този метод, потокът да улови вътрешния обект заключване.

С други думи, както следва:

Както можете да видите, употребата на синхронизирани дума генерира много по-кратък код. Разбира се, за да го разберете, трябва да знаете, че всеки обект има вътрешен заключване, както и че ключалката има вътрешен състояние.

Lock управлява нишки, които се опитват да влязат в синхрон метод. Условия контролират потока, причинено от чакането ().

Синхронизиране методи са относително прости. Въпреки това, начинаещите програмисти често имат проблеми с условията.

Също така е допустимо да се установи, статични методи синхронизирани. Когато се обадите на този метод, той улавя вътрешния ключалката на свързания клас обект.

Например, ако в класа Bank има статичен синхронизиран метод, а след това Bank.class заключване обект се заключва, когато той се нарича. В резултат на това не може да предизвика друг поток и няма друг синхронизирано статичен начин на този клас.

Фиксатори и условия имат някои ограничения:

  • Не можете да спрете потока, който се опитва да хване ключалката.
  • Вие не можете да определите времето за изчакване, като се опитва да грабне ключалката.
  • С единствен състояние в ключалката може да бъде неефективно.

Какво трябва да се използва в кода си - Lock и състоянието предмети или синхронизирани методи? Това са нашите препоръки:

  • По-добре е да не се използва всеки Lock / Състояние или ключова дума синхронизирани. В много ситуации, може да използвате един от java.util.concurrent пакет от механизми, които ще направят работата на блокиране за вас.
  • Ако синхронизирани дума за вашата ситуация, не забравяйте да го използвате. Ти пишеш по-малко код и ще бъде по-малко вероятно да се правят грешки. Програмата е показано по-долу показва пример с банката, осъществява въз основа на синхронизирани методи.
  • Използвайте Lock / Състояние, ако наистина имате нужда от допълнителни функции на тези структури.