+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 پاسخ 3.0هزار بازدید
+2 امتیاز
1 پاسخ 955 بازدید
0 امتیاز
0 پاسخ 306 بازدید
0 امتیاز
2 پاسخ 738 بازدید
+1 امتیاز
1 پاسخ 609 بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط Reza.R (851 امتیاز)
0 امتیاز
1 پاسخ 339 بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط Reza.R (851 امتیاز)
+1 امتیاز
1 پاسخ 676 بازدید
+1 امتیاز
1 پاسخ 770 بازدید
...