well even though one thread is active in a single processor, see the following scenario:
consider a thread has some int variable , it reads it & then process it
one more thread which changes that variable & does some other stuff.
now, consider thread1 reads int value, then scheduler decides to run thread2, now thread 2 changes the value,then thread 1 starts again, but thread 1 has old value,
this is what we dont want, one thread using old value other using latest value. hence we got to lock those objects
hope this helps u