A lock is a way to tell the computer that the following group of code should be executed together as a single operation, and not let other threads have access to the resource that is locked until the locking code is finished
Source: http://www.developerfusion.com/article/5184/multithreading-in-vbnet/2/