我有一个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)
我知道这个问题太宽泛了,但是:
我是否有任何一般的想法,我只能运行一次加载并用它来进行所有的计算?
如果我在顶层导入包(在套接字服务器中),这会不会以某种方式帮助我加快加载过程?
企业使用的常用方法是什么?
答案 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();
在实际操作中可能有用。