资源访问冲突问题
使用锁,需要先声明一个锁。锁可以是任意类型的对象。一般会声明一个Object类型的对象。
private Object _lock = new object();//这个对象不能为空,必须new一个。
要解决资源冲突问题,多个线程要使用同一把锁。
lock (_lock)//大括号里面写代码,就是你要把它锁上的代码
{
}
有可能会有多个线程去拿锁,但是锁只会被一个线程拿到,不会被多个线程拿到
当锁被某个线程拿到了,其他线程拿不到,怎么办?他就会在这等着
拿到锁的线程,就会执行大括号里的代码,执行完后,锁自动解开
其他线程就可以开始拿这个锁了
哪个线程抢到了锁,就可以执行锁里面的代码。
锁的优点:解决了资源冲突问题;
缺点:在同一个时间内,只能被一个线程执行,会拖慢多线程执行速度
示例:



