我有一些生成大量线程的类,应用程序的运行速度确实很慢,并且占用大量内存。我们已决定使用Poolthread来减少线程开销。 PoolThread
是在类中管理的,我有一个问题:如何将通用函数作为参数传递并在PoolThread中执行一次?
例如。
public void executeFunction( myFunction) {
executorService.execute(new Runnable() {
public void Run() {
run the function that I've passed
}
}
}
最佳答案
由于函数在Java中不存在适当的功能,因此您最好为executorService提供包含要执行的代码的Runnable(甚至更好的Callable)对象,并通过该方法返回相应的Future。
实际上,不管您信不信,这个方法存在于ExecutorService中:<T> Future<T> submit(Callable<T> task)
Future#get()
方法将允许您等待直到获得结果。