Let's say we have 'class A' which has a data member 'var'.

```
class A
{
  int var;

method()
{
read(var);

synchronized block
{

update var here;

}

}

```

Let's say Thread 1 acquires the lock and enters the synchronized block. It updates the field value 'var'. Let's say the field value is cached in the processor's core by the Thread. It updates the value in the cache.

Now thread 2 starts running, enters method(), and reads field value 'var'.

Wil thread 2, surely get the updated value? Does synchronize makes sure thread 2 will get updated value even when Thread 1 has not exited Synchronized. In this case, do we need to make 'var' volatile?

PS - Everything is happening on the same object.