+1 امتیاز
قبل در برنامه نویسی توسط (33 امتیاز)
ویرایش شده قبل توسط

من چند نمونه کد دیدم که یجا مسئله تولید کننده - مصرف کنند رو پیاد سازی کرده بود و توی دو حالت با متد synchronized و بلاک synchronized اجرا کرد و  در بلاک synchronized خیلی سریع تر انجام شد

تفاوت متد با بلاک synchronized چیه ؟

چه اتفاقی در اجرای برنامه اتفاق میوفته که بلاک سریع تر انجام میشه ؟

چه جایی باید از متد و چه جایی باید از بلاک synchronized استفاده کرد ؟

1 پاسخ

0 امتیاز
قبل توسط (1.1هزار امتیاز)

یک synchronized instance method، در سطح تمام اشیاء ساخته شده از کلاس، synchronized است، یعنی اگر از این کلاس چند شئ ساخته شود متد add هر شئ بصورت جداگانه synchronized است و وقتی یک thread در حال فراخوانی متد add یکی از اشیاء است، thread دیگر می تواند متد add یک شئ دیگر را فراخوانی کند. وقتی شما نمی خواهید کل یک متد را synchronized کنید از Synchronized Blocks in Instance Method استفاده می کنید و می توانید فقط قسمتی از آن متد را synchronized کنید. بلاک synchronized در جاوا یک شئ بعنوان مونیتور می گیرد و فقط یک thread می تواند درون بلاک کد synchronized شده برای هر شئ مونیتور اجرا شود. بنابراین هزینه synchronized کردن متد خیلی بیشتر از هزینه synchronized قسمتی از کد درون یک متد است.

سوالات مشابه

+2 امتیاز
2 پاسخ 2.8هزار بازدید
+2 امتیاز
1 پاسخ 789 بازدید
0 امتیاز
0 پاسخ 235 بازدید
0 امتیاز
2 پاسخ 641 بازدید
+1 امتیاز
1 پاسخ 506 بازدید
سوال شده 4 سال قبل در برنامه نویسی توسط Reza.R (851 امتیاز)
0 امتیاز
1 پاسخ 239 بازدید
سوال شده 4 سال قبل در برنامه نویسی توسط Reza.R (851 امتیاز)
+1 امتیاز
1 پاسخ 567 بازدید
+1 امتیاز
1 پاسخ 675 بازدید
...