Every write and every read is done directly on to the main memory and not in the CPU cache.

Solves the visibility problem between the threads.

Visibility problem: Each thread creates its own copy on a local cache of the variable they are dealing with. When this value is being updated, the update happens first in the local cache copy, and not in the real variable. Therefore, other threads are not aware about the values that other threads are changing.