【问题标题】:Performence Java Multithreading, create new Object or use sychronized [closed]性能 Java 多线程,创建新对象或使用同步 [关闭]
【发布时间】:2018-03-18 13:49:47
【问题描述】:

我有一个多线程服务器。 每个连接都有自己的线程。线程有时需要从 Object 访问某些方法,并且该方法一次只能调用一次。那么什么对性能更好:只是在需要使用它时为每个线程创建一个新对象。或者共享一个具有同步方法的全局对象?

【问题讨论】:

  • 一个不比另一个更好的原因是它取决于具体情况。
  • 这个对象有多少开销?调用这个对象需要多长时间?有多少线程会访问它?每个“连接”到什么都有它自己的线程,一个数据库?这种联系与对象有什么关系?需要更多上下文来提供帮助。
  • -对象非常小,它只是连接到 FCM(Google Firebase 消息传递)-它向服务器快速发送一些数据(1,5 到 2 秒)-我不知道我有多少连接服务器将处理,最大。 1000 小时这种类型。

标签: java multithreading server


【解决方案1】:

synchronizing 不会让您获得更好的性能。如果操作不当,可能会使性能变差。
您没有显示任何代码,因此我们无法就重点优化的内容向您提供任何建议。
作为一般建议:
1)尽可能避免任何状态。这种方式不需要同步
2) 如果对象需要有状态,则使状态不可变。这样您就不必关心同步并避免繁琐的错误
3) 如果对象创建很便宜,那么尽可能使用 (2)
4)如果对象创建很繁重,请查看单例模式并尝试在方法上使用锁。

关于

每个连接都有自己的线程

确保使用线程池

【讨论】:

    猜你喜欢
    • 2013-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多