JavaRush /Java blogi /Random-UZ /O'zgaruvchan (17-ma'ruzadagi misol)
dimaMJ
Daraja
Craiova

O'zgaruvchan (17-ma'ruzadagi misol)

Guruhda nashr etilgan
Umuman olganda, 17-ma'ruzada c misoli bor volatile, unda aytilishicha, agar o'zgaruvchi isCancelishlatilmasa volatile, bu o'zgaruvchining qiymatlarini boshqa ipdan o'zgartirib, boshqalar bu haqda bilmaydi, men misolni qayta yozdim, faqat usulda runipning nomi va qiymati ko'rsatiladi isCancelva ma'lum bo'ldiki, o'zgaruvchining mavjudligi volatileyoki yo'qligidan qat'i nazar, qiymat barcha oqimlar uchun o'zgaradi, hatto siz taqillatgan bo'lsangiz ham, men butunlay sarosimaga tushaman; agar men sinxronizatsiyani aniqladim, keyin men volatilesarosimaga tushdim va uni hech qanday tarzda qo'llay olmayman. Ehtimol, men qandaydir tarzda misolni noto'g'ri yaratganman? Men ham sinf yaratishga Clockva dan meros olishga Threadva mainikkita misol yaratishga va ikkalasini ham ishga tushirishga harakat qildim, u ham volatileishlamadi, menga yordam bering, aks holda aqldan ozaman) O'zgaruvchan (17-ma'ruzadagi misol) - 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();
                }
            }
        }
    }
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION