Junior — Middle
როგორ ხორციელდება ბლოკირება როდესაც იძახით სტატიკური მეთოდი, რომელიც გამოაცხადა synchronized საკვანძო სიტყვით?
sobes.tech AI
პასუხი AI-სგან
თუ სტატიკური მეთოდი გამოაცხადა სიტყვით synchronized, მაშინ ბლოკირება ხდება კლასის ობიექტზე (Class object), არა ინстанციაზე.
ეს ნიშნავს, რომ ასეთი მეთოდის გამოძახებისას, ნაკადი (thread) იღებს მონიტორს (lock) კლასის, რომელსაც ეკუთვნის მეთოდი, და სხვა ნაკადები, რომლებიც ცდილობენ გამოიძახონ ამ კლასის ნებისმიერი სხვა synchronized სტატიკური მეთოდი, დაელოდებიან ლოკის გათავისუფლებას.
მაგალითი:
public class MyClass {
public static synchronized void staticSyncMethod() {
// მეთოდის კოდი
}
}
აქ მონიტორი არის ობიექტი MyClass.class.