Java - 将数据加载到内存一次,并多次使用它

时间:2017-08-03 14:32:47

标签: java multithreading sockets

我有一个Java程序,它需要使用导入的源程序包中的函数,该程序包将2GB数据加载到内存中并用它来进行计算。

然而,每次调用该函数时,都会处理加载过程,这非常耗时。

我的程序结构如下:

Socket Server (listening on a port)

|_ Multi Server Thread (Work as a input stream reader)

...|_ Sample Protocol (deal with the input steam using the data related functions)

我知道这个问题太宽泛了,但是:

  1. 我是否有任何一般的想法,我只能运行一次加载并用它来进行所有的计算?

  2. 如果我在顶层导入包(在套接字服务器中),这会不会以某种方式帮助我加快加载过程?

  3. 企业使用的常用方法是什么?

1 个答案:

答案 0 :(得分:0)

由于这个问题长期没有得到任何答案,这里是 一个小小的总结:

在我使用的当前方法中,如果我在最高级别(Socket Server)加载lib,我们可以确保对于其中的每个线程我们不需要再次加载库。

在企业级,java有更好的多线程函数,如:

newCachedThreadPool()

的newFixedThreadPool()

newSingleThreadExecutor()

的newScheduledThreadPool()

例如,我们可以使用它们,

ExecutorService fixedThreadPool() = Executors.newFixedThreadPool(4);

Future<T> future1 = singleThreadPool.submit(new MyRunnable());

singleThreadPool.execute(new MyRunnable);

singleThreadPool.shutdown();

在实际操作中可能有用。