Java Language volatile


The volatile modifier is used in multi threaded programming. If you declare a field as volatile it is a signal to threads that they must read the most recent value, not a locally cached one. Furthermore, volatile reads and writes are guaranteed to be atomic (access to a non-volatile long or double is not atomic), thus avoiding certain read/write errors between multiple threads.

public class MyRunnable implements Runnable
    private volatile boolean active;
    public void run(){ // run is called in one thread 
        active = true;
        while (active){
            // some code here
    public void stop(){ // stop() is called from another thread
        active = false;