java高并发情况下sychronized有什么问题?

今天去面试一个公司,提了个售票问题,我说用synchronize d关键字对资源进行控制,被各种鄙视,说没项目经验,求教
关注者
75
被浏览
39,160
登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏

从面试者的角度出发,他应该是想让你回答关于高并发下分布式锁的应用场景!而你只回答synchronized,明显只停留在初级阶段,还达不到他们的要求,所以才说你没有项目经验,只停留在初级阶段(关于Java多线程编程),如果满分是10分的话,你这么回答:

1. 如果你只回答synchronized重量级锁

synchronized普遍认为特别是java se 1.6以前都是重量级锁,其它线程阻塞等待会造成很大的资源浪费,所有你这么回答作为面试官肯定觉得你才毕业或者没有过多高并发的编程项目经历,可能只会得2-3分

2. 如果补充回答到轻量级锁,CAS自旋锁等概念

Java SE 1.6以后出现了偏向锁,轻量级锁等概念。都是为了在高并发保证资源安全性的前提下,充分节约使用系统资源。所以你能补充到这个说明你已经算是入了个门,得分4-5分!

3.如果你再结合场景,分清楚单机还是分布式下的锁!

现在普遍分布式项目,这种售票系统更适合分布式,并且毫无疑问必须能支撑得起高并发!所以你不管知不知道分布式锁怎么实现,但是你能说到这一步,要求不高的话应该能6-7分,可以通过面试(非核心岗位)

4.如果你能再回答分布式锁的一些细节与重点

毫无疑问,Redis分布式锁,ZK分布式锁, 分布式事务……这些东西答好了,面试官应该比较满意的!得分7-8分。

5. 如果你本身就有千万级甚至亿级并发项目的经验,还有十分清楚这种类似高并发售票秒杀场景,如何架构!那么基本满分8-10分,完全没问题,小声BB面试官都可能不如你!(哈哈哈。确实一些小公司根本达不到高并发,也没有那个场景,但是面试都会涉及)