Guava ListenableFuture 实现多线程 先执行完线程任务 ,再来执行主线程
来源:互联网 发布:mac怎么新建txt文件 编辑:程序博客网 时间:2024/05/16 14:33
package ListenableFuture;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.Executors;
import com.google.common.collect.Lists;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.ListeningExecutorService;
import com.google.common.util.concurrent.MoreExecutors;
public class ceshi {
public static void main(String[] args){
List<ListenableFuture<Boolean>> futures = Lists.newArrayList();
ListeningExecutorService pool = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(5));;
int t = 1;
List<String> ttList = new ArrayList<>();
ttList.add("1");
ttList.add("2");
ttList.add("3");
ttList.add("4");
ttList.add("5");
final List<String> insertList = new ArrayList<String>();
for (int k = 0; k < ttList.size(); k++) {
insertList.add(ttList.get(k));
if (t % 3 == 0) {
ListenableFuture queryApp = pool.submit(new Callable<Boolean>() {
public Boolean call() {
for(int i=0;i<100000;i++){
System.out.println("111");
}
return Boolean.TRUE;
}
});
futures.add(queryApp);
insertList.clear();
}
t++;
}
if (insertList != null && insertList.size() > 0) {
ListenableFuture queryApp = pool.submit(new Callable<Boolean>() {
public Boolean call() {
for(int i=0;i<100000;i++){
System.out.println("222");
}
return Boolean.TRUE;
}
});
futures.add(queryApp);
}
final ListenableFuture<List<Boolean>> resultsFuture = Futures.successfulAsList(futures);
try {
resultsFuture.get();//等待线程执行完成后输出结果 (这个是为了等线程全部执行完返回执行结果再来执行主线程)
System.out.println("线程全部执行完了");
pool.shutdown();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.Executors;
import com.google.common.collect.Lists;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.ListeningExecutorService;
import com.google.common.util.concurrent.MoreExecutors;
public class ceshi {
public static void main(String[] args){
List<ListenableFuture<Boolean>> futures = Lists.newArrayList();
ListeningExecutorService pool = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(5));;
int t = 1;
List<String> ttList = new ArrayList<>();
ttList.add("1");
ttList.add("2");
ttList.add("3");
ttList.add("4");
ttList.add("5");
final List<String> insertList = new ArrayList<String>();
for (int k = 0; k < ttList.size(); k++) {
insertList.add(ttList.get(k));
if (t % 3 == 0) {
ListenableFuture queryApp = pool.submit(new Callable<Boolean>() {
public Boolean call() {
for(int i=0;i<100000;i++){
System.out.println("111");
}
return Boolean.TRUE;
}
});
futures.add(queryApp);
insertList.clear();
}
t++;
}
if (insertList != null && insertList.size() > 0) {
ListenableFuture queryApp = pool.submit(new Callable<Boolean>() {
public Boolean call() {
for(int i=0;i<100000;i++){
System.out.println("222");
}
return Boolean.TRUE;
}
});
futures.add(queryApp);
}
final ListenableFuture<List<Boolean>> resultsFuture = Futures.successfulAsList(futures);
try {
resultsFuture.get();//等待线程执行完成后输出结果 (这个是为了等线程全部执行完返回执行结果再来执行主线程)
System.out.println("线程全部执行完了");
pool.shutdown();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
阅读全文
0 0
- Guava ListenableFuture 实现多线程 先执行完线程任务 ,再来执行主线程
- JAVA 控制执行完多线程的任务再来执行主线程
- Android先执行线程池后执行主线程
- 多线程中主线程等待所有子线程执行完再继续执行的解决方法
- 子线程先执行10次,主线程执行5次,子线程再执行10次,主线程再执行5次,如此反复3次
- Java多线程--主线程等待所有子线程执行完毕
- java多线程 主线程等子线程执行完毕
- Java多线程--让主线程等待子线程执行完毕
- Java 主线程等待子线程执行完再执行
- Java 主线程等待子线程执行完再执行
- 子线程执行完后,主线程在执行场景
- 多线程Future之Guava ListenableFuture
- 线程实现定时执行任务
- c#子线程执行完怎么通知主线程
- c#子线程执行完怎么通知主线程
- c#子线程执行完怎么通知主线程
- C#子线程执行完后通知主线程
- C#子线程执行完后通知主线程
- Java面试题二:基础语法(续面试题一)
- EventBus使用
- spring 底层实现IOC DI简单依赖反射
- mysql安装与基本操作
- 隐藏QT窗口在任务栏中的图标
- Guava ListenableFuture 实现多线程 先执行完线程任务 ,再来执行主线程
- 运输问题--替换型贪心
- mybatis查询sql:where语句“查询时间字段书写问题”引发的索引失效
- Logo
- Web前端高效开发总结二:HTML最佳实践
- 性能之战:HTTPS PK HTT
- 86. Partition List
- 121. Best Time to Buy and Sell Stock
- 【主席树】51Nod 1175 区间中第K大的数