Finalize vs Cleaner
در قدیم اینجوری بود که ما متد finalize رو توی اشیا بازنویسی میکردیم و وقتی GC میخواست اون شی رو نابود کنه این متد رو صدا میزد و ما اگه لاجیک خواصی داشتیم اونجا مینوشتیم.
اما به دلیل مشکلاتی که این کار بوجود میاورد اون توی جاوا ۱۱ به بعد deprecated شده.
یکی از بزرگترین مشکلاتی که بوجود میاد این هستش که این متد توی thread مربوط به GC اجرا میشه و باعث بوجود اومدن مکث در thread اصلی میشه.
حالا باید چیکار کنیم؟
باید توی شی پدر اون شی که داره نابود میشه یه Cleaner بسازیم و شی مورد نظر و به همراه یک runnalbe توی اون register کنیم.
+ نوشته شده در یکشنبه ۲۰ تیر ۱۴۰۰ ساعت 19:14 توسط No One
|