使用java进行开发的盆友,是否遇到过这样的情况,在一个任务里,需要处理几个耗时的方法,但是彼此之间没有联系,即这几个方法可以并发进行。那么可以使用如下方式提高任务处理的效率。具体的可以看如下代码
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.FutureTask;
public class RealData implements Callable<String> {
protected String data;
public RealData(String data) {
this.data = data;
}
@Override
public String call() throws Exception { //利用sleep方法来表示真是业务是非常缓慢的
//
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return data;
}
}
public class Application {
public static void main(String[] args) throws Exception {
FutureTask<String> futureTask = new FutureTask<String>(new RealData("name"));
ExecutorService executor = Executors.newFixedThreadPool(1); //使用线程池
// 执行FutureTask,相当于上例中的client.request("name")发送请求
executor.submit(futureTask); //这里可以用一个sleep代替对其他业务逻辑的处理
// 在处理这些业务逻辑过程中,RealData也正在创建,从而充分了利用等待时间
Thread.sleep(2000); //使用真实数据 //如果call()没有执行完成依然会等
System.out.println("数据=" + futureTask.get());
}
}