+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.9هزار بازدید
+2 امتیاز
1 پاسخ 804 بازدید
0 امتیاز
0 پاسخ 244 بازدید
0 امتیاز
2 پاسخ 658 بازدید
+1 امتیاز
1 پاسخ 522 بازدید
سوال شده 4 سال قبل در برنامه نویسی توسط Reza.R (851 امتیاز)
0 امتیاز
1 پاسخ 246 بازدید
سوال شده 4 سال قبل در برنامه نویسی توسط Reza.R (851 امتیاز)
+1 امتیاز
1 پاسخ 584 بازدید
+1 امتیاز
1 پاسخ 696 بازدید
...