2014-10-06 126 views
0

我有一些类生成大量的线程,并且应用程序真的很慢并且占用大量内存。我们决定使用Poolthread来减少线程开销。 PoolThread是在一个类中管理的,我有一个问题:我如何将一个泛型函数作为参数传递并执行一次在PoolThread中?
例如将一个函数传递给PoolThread

public void executeFunction(myFunction) { 
    executorService.execute(new Runnable() { 
     public void Run() { 
      run the function that I've passed 
     } 
    } 
} 
+0

请澄清你的意思。你看过'ExecutorService'吗? – 2014-10-06 14:44:08

+1

*“我有一个问题:可能传递一个泛型函数作为参数,并且一次执行在PoolThread中?” - 答案:是的。 – rolfl 2014-10-06 14:45:59

+0

编辑问题 – Tinwor 2014-10-06 14:48:59

回答

2

作为函数具有在Java没有适当的存在,则能更好地得到的ExecutorService了Runnable(或甚至更好的可赎回)包含代码来执行,其中返回你相应的未来的方法的对象。

事实上,不管你信不信,这非常方法存在的ExecutorService:<T> Future<T> submit(Callable<T> task)

Future#get()方法可以让你等待,直到获得的结果。