public class SampleThread { public int Counter { get; set; } public void IncrementCounter() { for(int i = 0; I < 10; i++) { this.Counter++; Console.WriteLine(this.Counter); } } }Imagine a call coming in to IncrementCounter(). The counter is at 2 when another thread calls this same method on the same instance of the object. It increments the counter so it's now at 3. The first thread continues and prints 2 then loops and increments the counter again. It's now at 4; this thread skipped 3. This will continue as each thread runs. You may have even expected your counter to never go above 10, but in the multithreaded case it will go above this.