JavaRush /Blog Java /Random-ES /Volátil (ejemplo en la lección 17)
dimaMJ
Nivel 25
Craiova

Volátil (ejemplo en la lección 17)

Publicado en el grupo Random-ES
En general, hay un ejemplo c en la lección 17 volatile, dice que si isCancelno se usa una variable volatile, entonces al cambiar los valores de esta variable de otro hilo, el resto no lo sabrá, reescribí el ejemplo, solo en el método runse muestra el nombre del hilo y el valor isCancely resultó que independientemente de si la variable está presente volatileo no, el valor aún cambia para todos los flujos, incluso si tocas, estoy completamente confundido; si Descubrí la sincronización, entonces estoy volatileconfundido y no puedo aplicarla de ninguna manera. ¿Quizás creé mal el ejemplo de alguna manera? También intenté crear una clase Clocky heredar de Thread, maincrear dos instancias y ejecutar ambas, tampoco volatilefuncionó, ayúdame, de lo contrario me volveré loco) Volátil (ejemplo en la lección 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();
                }
            }
        }
    }
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION