JavaRush /Blog Java /Random-FR /Volatile (exemple dans la leçon 17)
dimaMJ
Niveau 25
Craiova

Volatile (exemple dans la leçon 17)

Publié dans le groupe Random-FR
En général, il y a un exemple c dans la leçon 17 volatile, il dit que si une variable isCanceln'est pas utilisée volatile, alors en changeant les valeurs de cette variable depuis un autre thread, les autres ne le sauront pas, j'ai réécrit l'exemple, seulement dans la méthode, runle nom du thread et la valeur sont affichés isCancelet il s'est avéré que peu importe selon que la variable est présente volatileou non, la valeur change toujours pour tous les flux, même si vous frappez, je suis complètement confus ; si je j'ai compris la synchronisation, alors je suis volatileconfus et je ne peux en aucun cas l'appliquer. Peut-être que j'ai mal créé l'exemple d'une manière ou d'une autre ? J'ai aussi essayé de créer une classe Clocket d'hériter de Thread, mainde créer deux instances et d'exécuter les deux, cela volatilen'a pas fonctionné non plus, aidez-moi, sinon je vais devenir fou) Volatile (exemple dans la leçon 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();
                }
            }
        }
    }
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION