https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/lock-statement
lock可以保证结果达到预期,但是有可能把程序给弄卡死(lock包裹的代码执行耗时很长)