问题:假设有一个公交车预订站点,大约有10万个线程正在运行,但总座位只有20个。现在您将如何控制性能以及您在Java多线程中的方法是什么?我回答说我将使用同步方法或阻止,因为它将控制并发线程,锁定将阻止异步执行。但是采访者打断了我,并说同步是一个虚假的想法,性能会降低,而且没有用。如果我错过任何其他有用的多线程概念可以解决这个问题,请告诉我!谢谢!!
3 回答

桃花长相依
TA贡献1860条经验 获得超8个赞
一个问这样的问题的面试官并不是在寻找一些特定的解决方案或想法。他们希望了解您如何推理同步。一个明智的答案可能是:
有这么多线程,显然没有人关心性能。如果您关心性能,请减少线程数。他们只是争夺同样的资源。
但是如果你必须拥有这么多线程,那么使用锁会很有意义,因为它会通过让大多数线程尽可能长时间地保持在准备运行状态来消除这么多线程带来的一些伤害。虽然锁之外的某些方法可能会使更多线程同时运行,但它可能会降低性能,因为线程会严重影响导致大量缓存ping-ponging和其他问题。有这么多线程,阻止大多数线程是避免执行线程之间争用的最佳策略,并允许这个设计糟糕的应用程序实际上至少完成一些工作。
同样,如果你真的想让它合理地工作,你必须从疯狂的线程计数问题中重新构建它。
添加回答
举报
0/150
提交
取消