Sobes.tech
Junior — Middle

What is the purpose and features of the volatile modifier in programming languages?

sobes.tech AI

Answer from AI

The volatile modifier in programming languages (such as Java or C/C++) is used to indicate to the compiler and processor that the value of a variable may change at any moment, outside the control of the current execution thread.

This is important in multithreaded programs, where one thread may modify a variable, and another thread may read it. Without volatile, the compiler might optimize the code by caching the variable's value in a register and not seeing updates from other threads.

Features of volatile:

  • Ensures that reading and writing the variable occurs directly from main memory.
  • Provides visibility of variable changes between threads.
  • Does not guarantee atomicity of operations (for example, incrementing is still not atomic).

Example in Java:

volatile boolean flag = false;

// Thread 1
flag = true;

// Thread 2
if (flag) {
    // will see the updated value of flag
}

Without volatile, Thread 2 may not see the update to flag due to caching.