>  Q&A  >  본문

java - 单例对多线程的性能影响有多大?

我抽象了一个连接管理类, ConnectionManager, 主题类TopicManager,可能还有更多.

  1. 就拿这个TopicManager来说, 我的程序主要就是用发布订阅的模式实现通讯, 也就是TopicManager的访问读取会非常频繁. 因为是单例的, 我肯定要做线程同步处理, 这样在多线程下对性能的影响有多大了?

  2. 相比之下, 我如果取消TopicManager这个类, 直接对数据库操作, 通过c3p0连接池, 以上两种方法相比, 哪种开销更大.

多谢各位.

巴扎黑巴扎黑2766일 전789

모든 응답(3)나는 대답할 것이다

  • 迷茫

    迷茫2017-04-17 17:11:01

    싱글톤과 멀티스레딩은 전혀 관련이 없는 두 가지 분야입니다. 싱글톤은 객체 제어 문제를 해결하는 반면, 멀티스레딩은 멀티코어 프로세서의 기능을 최대한 활용하는 문제를 해결합니다.
    싱글톤을 동기화해야 한다는 의미는 아닙니다. 동기화는 데이터 공유가 발생할 때만 필요합니다. 따라서 싱글톤을 사용하지 않더라도 여러 개체가 리소스를 공유하더라도 동일한 방식으로 동기화해야 합니다. 싱글톤을 사용하더라도 리소스를 공유하지 않으면 여전히 동기화가 필요하지 않습니다.

    실용적 예:
    이제 싱글턴이 있는데 싱글턴 방식은 정적 객체를 사용하지 않습니다. 즉, 리소스 공유가 없으므로 동기화가 필요하지 않습니다.

    회신하다
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 17:11:01

    개인적으로 이해하기로는 멀티스레딩을 고려한다면 싱글톤을 잠가야 하고, 비즈니스 상황에 따라 성능에 확실히 영향을 미칠 것이라는 점입니다

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-17 17:11:01

    단일 케이스는 읽기 전용입니다. . 영향이 없습니다. .

    회신하다
    0
  • 취소회신하다