Sobes.tech
Junior — Middle

Synchronized колдонуп жатканда объекттин белгилүү бир бөлүгүн гана синхрондоштурууну чектөөгө болобу?

sobes.tech AI

AIден жооп

Javaда synchronized ачкыч сөзү чакырылган объекттин мониторун блоктойт. Эгер сиз synchronizedти объектте колдонсоңуз, анда ошол объекттин бүт мониторун блоктойт, анын бир бөлүгү эмес.

Бирок, сиз синхрондоштуруу чөйрөсүн чектөө үчүн, бүт объектке эмес, ички өзүнчө объектке же конкреттүү маалымат бөлүгүнө жооптуу код блогуна синхрондоштуруу жүргүзө аласыз. Мисалы, эгерде сизде бир нече талаалары бар объект болсо жана сиз гана бирине кирүүнү синхрондоштургуңуз келсе, ошол бөлүк үчүн өзүнчө блокировка объектисин түзө аласыз.

Мисал:

private final Object lockForPart = new Object();

public void updatePart() {
    synchronized(lockForPart) {
        // бул объекттин ушул бөлүгүнө гана синхрондоштурулган код
    }
}

Мындайча айтканда, синхрондоштуруу белгилүү бир монитор тарабынан корголгон аймакка гана чектелет, бүт объектке эмес.