run方法难道还存在竞争的可能吗?不是一个线程一个run方法吗?很迷惑。
3条回答 默认 最新
- Ratil_lite 2021-02-24 13:33关注
防止多个线程并发执行的时候,customerServed这个变量累加的结果不对。synchronized(this) 相当于给整个对象加锁,因此每个线程执行到这里的时候都会等待上一个线程释放锁。如果不加 synchronized(this) ,你会发现如果有50个线程执行,最终 customerServed 的结果并不是加了50,而一定会比50少。
如图,没加锁就会出现两个线程同时执行,出现相同结果,从而达不到50的结果
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 关于#网络安全#的问题:求ensp的网络安全,不要步骤要完成版文件
- ¥15 可否在不同线程中调用封装数据库操作的类
- ¥20 使用Photon PUN2解决游戏得分同步的问题
- ¥15 微带串馈天线阵列每个阵元宽度计算
- ¥15 keil的map文件中Image component sizes各项意思
- ¥30 BC260Y用MQTT向阿里云发布主题消息一直错误
- ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
- ¥15 划分vlan后,链路不通了?
- ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
- ¥15 Vue3 大型图片数据拖动排序