JavaRush /Java блогу /Random-KY /Учма (17-лекциядагы мисал)
dimaMJ
Деңгээл
Craiova

Учма (17-лекциядагы мисал)

Группада жарыяланган
Жалпысынан алганда, 17-лекцияда c мисалы бар volatile, эгерде өзгөрмө isCancelколдонулбаса volatile, анда бул өзгөрмөнүн маанилерин башка жиптен өзгөртүү менен, башкалар ал жөнүндө билбей калат, мен мисалды кайра жаздым, бир гана ыкмада 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