问一个Java死锁的问题
发布网友
发布时间:2023-03-09 13:04
我来回答
共1个回答
热心网友
时间:2023-10-11 03:15
1、同步代码:线程安全 数据安全 数据完整 性能非常低。
2、非同步代码:非线程安全 数据不完整、数据重复、数据错位等 性能高。
3、死锁:过多的同步就会造成死锁。好比这样一个场景:有一天大马猴偷了二狗的女朋友,二狗偷了大马猴的儿子(多个线程对象同时同步),二狗说:你还我女朋友,我就还你儿子。大马猴说:你还我儿子,我就还你女朋友。二狗又说:你不还我女朋友,我就不还你儿子。大马猴说:你不还我儿子,我就不还你女朋友。(此时出现了死锁),有两种结果:1、等死。(内存耗尽) 2、只要有一方松开即可解这个锁。
4、解决方案:删除代码中任何一个synchronized()代码块即可。