如何在最有效的情况下使用多个线程而在java中没有同步?

问题:假设有一个公交车预订站点,大约有10万个线程正在运行,但总座位只有20个。现在您将如何控制性能以及您在Java多线程中的方法是什么?

我回答说我将使用同步方法或阻止,因为它将控制并发线程,锁定将阻止异步执行。

但是采访者打断了我,并说同步是一个虚假的想法,性能会降低,而且没有用。

如果我错过任何其他有用的多线程概念可以解决这个问题,请告诉我!

谢谢!!


摇曳的蔷薇
浏览 494回答 3
3回答

海绵宝宝撒

您必须使用许可证20的信号量,这意味着如果乘客被视为线程,则每次有20名乘客可以占用座位。仅在核心java多线程的情况下,这可能是答案。

桃花长相依

一个问这样的问题的面试官并不是在寻找一些特定的解决方案或想法。他们希望了解您如何推理同步。一个明智的答案可能是:有这么多线程,显然没有人关心性能。如果您关心性能,请减少线程数。他们只是争夺同样的资源。但是如果你必须拥有这么多线程,那么使用锁会很有意义,因为它会通过让大多数线程尽可能长时间地保持在准备运行状态来消除这么多线程带来的一些伤害。虽然锁之外的某些方法可能会使更多线程同时运行,但它可能会降低性能,因为线程会严重影响导致大量缓存ping-ponging和其他问题。有这么多线程,阻止大多数线程是避免执行线程之间争用的最佳策略,并允许这个设计糟糕的应用程序实际上至少完成一些工作。同样,如果你真的想让它合理地工作,你必须从疯狂的线程计数问题中重新构建它。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java