JavaRush /Java-Blog /Random-DE /Flüchtig (Beispiel in Vorlesung 17)
dimaMJ
Level 25
Craiova

Flüchtig (Beispiel in Vorlesung 17)

Veröffentlicht in der Gruppe Random-DE
Im Allgemeinen gibt es in Vorlesung 17 ein Beispiel c. volatileDarin heißt es: Wenn eine Variable isCancelnicht verwendet wird volatileund die Werte dieser Variablen in einem anderen Thread geändert werden, erfahren die anderen nichts davon. Ich habe das Beispiel nur umgeschrieben In der Methode runwerden der Name des Threads und der Wert angezeigt isCancelund es stellte sich heraus, dass sich unabhängig davon, ob die Variable vorhanden ist volatileoder nicht, der Wert immer noch für alle Flüsse ändert, selbst wenn man klopft, bin ich völlig verwirrt; wenn ich Wenn ich die Synchronisierung herausgefunden habe, bin ich volatileverwirrt und kann sie in keiner Weise anwenden. Vielleicht habe ich das Beispiel irgendwie falsch erstellt? Ich habe auch versucht, eine Klasse zu erstellen Clockund von zu erben Thread, und mainzwei Instanzen zu erstellen und beide auszuführen, es volatilehat auch nicht funktioniert, hilf mir, sonst werde ich verrückt) Flüchtig (Beispiel in Vorlesung 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();
                }
            }
        }
    }
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION