JavaRush /وبلاگ جاوا /Random-FA /فرار (مثال در سخنرانی 17)
dimaMJ
مرحله
Craiova

فرار (مثال در سخنرانی 17)

در گروه منتشر شد
به طور کلی، یک مثال c در سخنرانی 17 وجود دارد volatile، می گوید که اگر از متغیری isCancelاستفاده نشود volatile، با تغییر مقادیر این متغیر از یک رشته دیگر، بقیه از آن خبر نخواهند داشت، من مثال را بازنویسی کردم، فقط در روش runنام thread و مقدار نمایش داده می شود isCancelو مشخص شد که صرف نظر از اینکه متغیر وجود دارد volatileیا نه، مقدار باز هم برای همه جریان ها تغییر می کند، حتی اگر بکوبید، من کاملا گیج می شوم. همگام سازی را فهمیدم، سپس volatileگیج شدم و به هیچ وجه نمی توانم آن را اعمال کنم. شاید من مثال را اشتباه ایجاد کردم؟ من همچنین سعی کردم یک کلاس ایجاد کنم Clockو از آن ارث ببرم Thread، و mainدو نمونه ایجاد کنم و هر دو را اجرا کنم، همچنین volatileکار نکرد، کمکم کنید، وگرنه دیوانه خواهم شد) فرار (مثال در سخنرانی 17) - 1
public static void main(String[] args)
    {
       Clock n = new Clock();

        Thread thread1 = new Thread(n);
        Thread thread2 = new Thread(n);
        thread1.start();
        thread2.start();

        try
        {
            Thread.sleep(3000);
        }
        catch (InterruptedException e)
        {
            e.printStackTrace();
        }

        n.cancel();

    }

    public static class Clock implements Runnable
    {
        private volatile boolean isCancel = false;

        public void cancel()
        {
            this.isCancel = true;
        }

        @Override
        public void run()
        {
            while (true)
            {

                try
                {   System.out.println(Thread.currentThread().getName()+" "+isCancel);
                    Thread.sleep(2000);
                }
                catch (InterruptedException e)
                {
                    e.printStackTrace();
                }
            }
        }
    }
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION