我有一个运行多个线程的Java EE应用程序。我希望将这些线程从我的应用程序中移除,只需访问它们的数据(字符串和整数)。
如果我想在我的Web应用程序上调用一个访问不同服务器/ JVM上的线程数据的方法,我该如何实现呢?
答案 0 :(得分:0)
访问线程数据
在Java中,几乎所有数据都在堆上,这是由许多线程共享的。很少有它完全限定在一个单独的线程。因此,移动线程而只是“其数据”的想法没有多大意义。
并不仅仅是Java,几乎任何具有共享可变状态的语言都将面临同样的问题。
当然,你的应用程序可以有线程拥有数据的概念,但这应该是应用程序逻辑,而不是java本身或其Thread类的一部分。
答案 1 :(得分:0)
假设您想要将这些层分开(可能将它们放在不同的机器上或用于可伸缩性),您可以将数据层与表示层分开并将它们放在不同的JVM中。您使数据层为表示层提供服务。如何执行此操作取决于您的首选运输。例如它可以是Web服务,也可以使用RMI,JMS,TCP,共享内存。
在任何情况下,一个JVM只能通过JVM公开的服务访问另一个进程的数据。 (除了共享内存的情况,但除非您的数据模型非常简单,否则它不容易实现)