0 امتیاز
قبل در برنامه نویسی توسط (426 امتیاز)
class MyThread extends Thread
{
   public void run ()
   {
      synchronized ("A")
      {
         System.out.println (getName () + " about to wait.");
         try
         {
            "A".wait ();
         }
         catch (InterruptedException e)
         {
            System.out.println (getName () + " interrupted.");
         }
         System.out.println (getName () + " terminating.");
      }
   }
}

 

1 پاسخ

+1 امتیاز
قبل توسط (255 امتیاز)
A در این کاتکس یک آبجکت از جنس رشته اس که فقط جهت lock کردن بلاک مربوطه و برای thread-safety استفاده شده است.
قبل توسط (426 امتیاز)
یعنی از یک ابجکتی که ربطی به کد ما نداره استفاده کرده که بلاک رو lock کنیم ممکنه توضیح بیشتری بدین
خط شماره ۱۰ چه معنی داره؟
قبل توسط (255 امتیاز)
دقیقا. اینجا میتونی از هر آبجکتی استفاده کنی که execution به همین thread فعلی لاک کنی. خط 10 باعث میشه thread فعلی wait بشه و منتظر notify  یا join کردن بقیه thread ها بشه. بستگی داره آبجکت لاکت چی باشه. مثلل میتونی این شکلی بگی:
synchronized(this) که خود instance از کلاس رو لاک میکنه. یعنی دو تا thread با هم نمی تونن وارد این بلاک بشن روی این instance.  ولی رو دو تا instance مختلف قضیه فرق میکنه.

سوالات مشابه

0 امتیاز
0 پاسخ 394 بازدید
0 امتیاز
0 پاسخ 495 بازدید
0 امتیاز
0 پاسخ 490 بازدید
0 امتیاز
0 پاسخ 450 بازدید
+1 امتیاز
0 پاسخ 440 بازدید
+2 امتیاز
1 پاسخ 900 بازدید
سوال شده 8 سال قبل در برنامه نویسی توسط kapitan (25 امتیاز)
0 امتیاز
0 پاسخ 421 بازدید
+1 امتیاز
1 پاسخ 928 بازدید
+1 امتیاز
1 پاسخ 1.2هزار بازدید
0 امتیاز
0 پاسخ 510 بازدید
...