java 多线程处理一个list的集合
2024-08-26 06:53:34
原文:http://blog.csdn.net/jenny8080/article/details/52100312
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future; public class App { public static void main(String[] args) {
try {
List<String> list = new ArrayList<String>();
for (int i = 0; i < 1000; i++) {
list.add(i + ",");
} System.out.println(list2Str(list, 5));
} catch (Exception e) {
e.printStackTrace();
}
}
public static String list2Str(List<String> list, final int nThreads)
throws Exception {
if (list == null || list.isEmpty()) {
return null;
}
StringBuffer ret = new StringBuffer(); int size = list.size();
ExecutorService executorService = Executors.newFixedThreadPool(nThreads);
List<Future<String>> futures = new ArrayList<Future<String>>(nThreads);
for (int i = 0; i < nThreads; i++) {
final List<String> subList = list.subList(size / nThreads * i, size/ nThreads * (i + 1));
Callable<String> task = new Callable<String>() {
public String call() throws Exception {
StringBuffer sb = new StringBuffer();
for (String str : subList) {
sb.append(str);
}
return sb.toString();
}
};
futures.add(executorService.submit(task));
} for (Future<String> future : futures) {
ret.append(future.get());
}
executorService.shutdown(); return ret.toString();
} }
最新文章
- JSONP跨域操作
- JQuery选择器
- Session中load/get方法的详细区别
- JavaWeb 自定义404页面
- 数据文件 和日志文件 收缩 Sql Server
- 五指CMS发布,主打高性能
- win10全系列官方MSDN原版系统安装密钥、版本区别、镜像下载地址与激活教程
- 转:Java同步synchronized使用
- while循环 操作列表与字典
- bzoj3224Tyvj 1728 普通平衡树 treap
- SQL Server 远程更新目标表数据
- [LeetCode] Quad Tree Intersection 四叉树相交
- 【XAF问题】层层分级,如何让按钮显示指定的视图
- Python之OS内置模块
- sip (db33)信令交互-视频点播与回播
- Android Launcher分析和修改5——HotSeat分析
- JavaScript构造函数详解
- panabit允许一台代理服务器只能收QQ企业邮箱,和内网ip通讯,限制除了QQ企业邮箱以外的所有内容规则
- display:block、inline、inline-block的区别及应用案例
- ITerms2在mac系统下的安装和配色,并和go2shell关联