Thread Volatile Variable In Java Example
Chapter:
Thread
Last Updated:
16-06-2017 09:09:24 UTC
Program:
/* ............... START ............... */
public class JavaVolatileVariables extends Thread {
private volatile boolean keepRunning = true;
public void run() {
System.out.println("Thread started");
while (keepRunning) {
try {
System.out.println("Going to sleep");
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("Thread stopped");
}
public void stopThread() {
this.keepRunning = false;
}
public static void main(String[] args) throws Exception {
JavaVolatileVariables v = new JavaVolatileVariables();
v.start();
Thread.sleep(3000);
System.out.println("Going to set the stop flag to true");
v.stopThread();
}
}
/* ............... END ............... */
Output
Thread started
Going to sleep
Going to sleep
Going to sleep
Going to set the stop flag to true
Thread stopped
Notes:
-
The Java volatile keyword guarantees visibility of changes to variables across threads.
- The Java volatile keyword is used to mark a Java variable as "being stored in main memory". More precisely that means, that every read of a volatile variable will be read from the computer's main memory, and not from the CPU cache, and that every write to a volatile variable will be written to main memory, and not just to the CPU cache.
Tags
Thread Volatile Variable, Java