Supponiamo che abbia la seguente classe
class Student{
void method1(){
// Do Something
}
void method2(){
// Do Something
}
}
E l'oggetto di questa classe è usato come monitor in sincronizzazione in qualche parte del codice come
class ProcessingThread implements Runnable {
void someMethod(){
synchronized(student){ // student object is used as lock. Thread T1 acquires a lock on student.
// critical section of code
}
}
}
Quando un thread T1 acquisisce un blocco sull'oggetto studente ed entra nella sezione critica del codice, allo stesso tempo può un altro thread T2 eseguire un metodo sull'oggetto studente i.e.
class College{
void assignTopic(){
student.method1(); // Thread T2 working on student object when
// Thread T1 has acquired a lock on student
}
}
Voglio sapere che cosa succede ai metodi / variabili dell'oggetto bloccato quando viene acquisito da un thread?