синхронизация Тема, класовете обекти и заключване заключване

синхронизация Тема, класовете обекти и заключване заключване

Java поддържа множество нишки да се изпълнява. Това може да доведе до факта, че две или повече нишки имат достъп до една и съща област или обект. Синхронизацията е процес, който ви позволява да изпълнявате всички паралелни потоци на програмата едновременно. Синхронизацията ви позволява да се избегнат грешки последователност памет причинени в резултат на не-последователен достъп до споделена памет.
Когато един метод е обявен синхронизирано - нишка държи монитора за обекта, чийто метод се изпълнява. Ако друга нишка се изпълнява синхронизиран метод, вашата нишка ще бъдат заключени, докато другите версии конци монитора.
Синхронизацията се осъществява в Java използване на резервирания думата синхронизирани. Можете да го използвате в своите класове са определени синхронизирани методи или блокове. Не можете да използвате променливи в синхронизирани или атрибути в дефиницията на класа.

Блокиране на ниво обект

Този механизъм синхронизация не е статичен или статичен блок код, така че само една нишка може да изпълни блока или метод в този случай клас.
Това трябва да се направи, когато е необходимо да се направи данните в нишката на ниво инстанция.
например:

Блокиране на ниво клас

Предотвратява множество нишки да влезе в синхронизирано блок по време на работа в някоя от наличните случаи. Това означава, че ако по време на изпълнението на програмата са 100 случаи на DemoClass клас, само една нишка в този момент ще изпълнява demoMethod () в някой от случаите, както и всички други случаи ще бъде блокиран за други потоци.
Това е необходимо, когато искате да направите статична нишка данни.

Някои важни

1. Синхронизация в Java гарантира, че няма две нишки няма да могат да се изпълни синхронизирано метод за едновременно или едновременно.

2. синхронно може да се използва само с методите и кодови блокове. Тези методи или блоковете могат да бъдат статични или не-статични.

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

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

5. Синхронизация в Java ще хвърлят NullPointerException ако обектът се използва в синхрон блок нула. Така например, в горния код Например, ако ключалката се инициализира с нула, синхронизирана (заключване) ще хвърлят NullPointerException.

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

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

8. В съответствие със спецификацията на езика, на който не може да използва синхронизирани в конструктора това ще доведе до грешка компилация.

Успех в тренировките.