您的位置:首页 > 编程语言 > Java开发

Java多线程的一种实现

2017-08-14 09:52 148 查看
Java多线程的一种实现

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

public class CallableAndFuture {

public static class MyCallable implements Callable<Object> {
private String key = null;

public MyCallable(String key) {
this.key = key;
}

public String call() throws Exception {
System.out.println(key);
//在这里写入你要执行的活动代码
//to do something

return "线程"+key+"执行完毕";//返回值可以根据需求修改
}
}

public static void main(String[] args) {
// 创建一个执行任务的服务
int taskSize = 20;//线程的数量
ExecutorService es = Executors.newFixedThreadPool(taskSize);
List<Future<Object>> resultList = new ArrayList<Future<Object>>();

for (int i = 0; i < 100; i++) {
String s = String.valueOf(i);//要传入线程的参数,可以根据自己的需求修改
Future<Object> future = es.submit(new MyCallable(s));
resultList.add(future);
}

for (Future<Object> fs : resultList) {
try {
if (null != fs) {
String str = (String) fs.get();//获得线程执行的返回值
//做相应的处理
//to do something

if (null == str) {
continue;
}
System.out.println(str);
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
// 启动一次顺序关闭,执行以前提交的任务,但不接受新任务。如果已经关闭,则调用没有其他作用。
es.shutdown();
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 多线程