JavaRush /جاوا بلاگ /Random-SD /غير مستحڪم (مثال ليڪچر 17 ۾)
dimaMJ
سطح
Craiova

غير مستحڪم (مثال ليڪچر 17 ۾)

گروپ ۾ شايع ٿيل
عام طور تي ليڪچر 17 ۾ c جو مثال آهي volatile، ان ۾ چيو ويو آهي ته جيڪڏهن هڪ variable isCancelاستعمال نه ڪيو ويو آهي volatile، ته پوءِ ان variable جي قدرن کي ٻئي ٿريڊ مان تبديل ڪرڻ سان، باقي ان جي باري ۾ ڪا خبر نه پوندي، مون اهو مثال ٻيهر لکيو آهي، صرف. طريقي ۾ runٿريڊ جو نالو ۽ قيمت ڏيکاريل آهي 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