java - Java多线程性能,创建新对象或者使用synchronized

标签 java multithreading server

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

最佳答案

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

关于

Each connection have its own Thread

确保使用线程池

关于java - Java多线程性能,创建新对象或者使用synchronized,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46611094/

相关文章:

java - 概述 Java Swing 如何允许在基于 JFrame 的单个窗口中使用多种布局。

java - 错误:Log already in use?

java - 服务器-客户端这里出了什么问题?

windows - IOCP 循环终止可能导致内存泄漏?如何优雅地关闭 IOCP 循环

c# - 锁定的 console.writeline 调用工作不正常

c# - 如果我们传递对象本身,为什么我们需要 EventArgs? C#

java - 嵌套异常是 java.lang.NoClassDefFoundError : org/slf4j/impl/MessageFormatter

java - Spring Boot,@Autowire 使用@Configurable 和加载时间织入非托管类

java - 枚举抛出 "Is Not An Enum Type"

c# - 我可以在 lock 语句中使用 Interlocked.Increment 吗?