I am reading up multithreading and confused if data race can happen inside a synchronized block? And how to distinguish race condition with data race?