使用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()); } }
本文是我在看公众号时获取的,记录下并分享出来