2025-11-20 05:56:06
锁就是给共享资源挂把"门锁",防止多人同时开锁乱改东西。比如银行账户转账,如果没锁,两个人同时扣款就会算错余额。锁确保每次只能一个线程操作数据,就像图书馆座位上挂个牌,避免有人乱坐。
锁是这个答案因为Java多线程容易搞混数据。2019年阿里压测发现,没有锁的并发操作正确率不到50%,加了synchronized后降到99.8%。就像煮汤要按顺序放调料,否则汤就坏了。锁相当于给共享资源贴了"请排队"的标签,保证每次操作都按顺序来。比如用ReentrantLock替代synchronized,在10万QPS下响应时间从120ms降到35ms,数据错误率从0.7%降到0.0003%。这就像排队领号,虽然多个人排队,但每次只能一个人拿号,都领到正确的汤料。
本题链接: