ჩვენს პროგრამაშიც კი ვერ ახერხებს საბოლოო მეთოდის გაშვებას სამივე ძაფისთვის. „ეს მეთოდი არსებითად სახიფათოა შეიძლება გამოიწვიოს საბოლოო მაუწყებლების გამოძახება ცოცხალ ობიექტებზე, მაშინ როდესაც სხვა ძაფები ერთდროულად მანიპულირებენ ამ ობიექტებზე, რაც გამოიწვევს არარეგულარულ ქცევას ან ჩიხს. "
რატომ უნდა აიცილოთ საბოლოო მეთოდი C?
ობიექტის Finalize მეთოდი არ უნდა გამოიძახოს მეთოდი სხვა ობიექტებზე, გარდა მისი საბაზისო კლასისა. ეს იმიტომ ხდება, რომ სხვა ობიექტების გამოძახება შეიძლება შეგროვდეს ერთდროულად, როგორც გამოძახებული ობიექტი, მაგალითად, საერთო ენის მუშაობის დროის გამორთვის შემთხვევაში.
უნდა გადავლახოთ საბოლოო მეთოდი?
finailze მეთოდი უნდა გაუქმდეს იმისათვის, რომ ობიექტი შეიცავდეს გასუფთავების კოდს ან განკარგოს სისტემის რესურსები, რომლებიც უნდა გაკეთდეს ობიექტის ნაგვის შეგროვებამდე.
რა მოხდება, თუ გამონაკლისი დაშვებულია Finalize მეთოდით?
თუ დაუჭერელი გამონაკლისი დაიშლება საბოლოო მეთოდით, გამონაკლისი იგნორირებულია და ამ ობიექტის დასრულება მთავრდება. … დასრულებული მეთოდით გამორიცხული ნებისმიერი გამონაკლისი იწვევს ამ ობიექტის დასრულებას შეჩერებას, მაგრამ სხვაგვარად იგნორირებულია.
რა არის საბოლოო მეთოდის მიზანი?
Object კლასის საბოლოო მეთოდი არის მეთოდი, რომელსაც Grabage Collector ყოველთვის იძახებს წაშლამდე/განადგურებამდე ობიექტი, რომელიც შესაფერისია Garbage Collection-ისთვის, რათა შეასრულოს გასუფთავების აქტივობა.