Java 共享对象设计模式
我对如何解决以下问题有点困惑: 我有一个大的(JavaSE)应用程序,它基于生产者-消费者模型,主要是多线程的。例如,10个线程正在获取消息,40个线程正在消费消息。现在我有了需要在所有线程中共享的对象,比如ThreadPoolExecutor。伪代码:Java 共享对象设计模式,java,multithreading,design-patterns,dependency-injection,Java,Multithreading,Design Patterns,Dependency Injection,我对如何解决以下问题有点困惑: 我有一个大的(JavaSE)应用程序,它基于生产者-消费者模型,主要是多线程的。例如,10个线程正在获取消息,40个线程正在消费消息。现在我有了需要在所有线程中共享的对象,比如ThreadPoolExecutor。伪代码: ExecutorService execService = new ThreadPoolExecutor(10, 10, 1, TimeUnit.SECONDS, some_queue); execService.submit(new Co
ExecutorService execService =
new ThreadPoolExecutor(10, 10, 1, TimeUnit.SECONDS, some_queue);
execService.submit(new Consumer(sharedEntityManagerFactory)
这些使用者线程将每个获取的消息提交给另一个ThreadPoolExecutor,后者有线程来处理此消息
现在我的问题是,如何在所有线程之间有效地共享对象(例如,DataAccessObjects的EntityManagerFactoryObject(我认为它应该是一个单例)?这只是一个例子,它也可以是一个简单的列表,或者是一个更复杂的POJO
一个可能的(/好的)解决方案是在依赖注入(JavaSE)中实现这一点吗?据我所知,这将是一个伟大的解决方案,但对象只创建一次,线程只保存引用,而不是一个真正的新对象。根据您计划使用的依赖项注入库,详细信息会有所不同。但是它们中的大多数都提供了指定注入对象为单例的可能性,也就是说:库只会创建它一次,同一个实例也会注入所有客户端。因此,即使在JavaSE中,通过依赖项注入来解决这个问题也是一种很好的方法?