我有一些类会生成很多线程,而且应用程序非常慢并占用大量内存。我们决定使用Poolthread来减少线程开销。 PoolThread
在一个类中进行管理,我有一个问题:如何将泛型函数作为参数传递并在PoolThread中执行一次?
E.g。
public void executeFunction( myFunction) {
executorService.execute(new Runnable() {
public void Run() {
run the function that I've passed
}
}
}
答案 0 :(得分:2)
由于函数在java中没有正确的存在,你最好给executorService一个包含要执行的代码的Runnable(或者甚至更好的Callable)对象,并使用该方法返回相应的Future。
事实上,不管你信不信,这个方法存在于ExecutorService中:<T> Future<T> submit(Callable<T> task)
Future#get()
方法将允许您等到获得结果。