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;
}
}