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

Executors线程池例子

2020-05-03 07:19 916 查看

ExecutorService、Callable<Class>、Future 有返回值线程

class MyCallable implements Callable<String> {

protected String name;

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

@Override
public String call() throws Exception {
return this.name;
}
}

ExecutorService pool = Executors.newFixedThreadPool(3);

ArrayList<Future<String>> list = new ArrayList<>();

for (int i = 0; i < 3; i++) {
MyCallable callable = new MyCallable("call " + i);
Future<String> future = pool.submit(callable);
list.add(future);
}

for (int i = 0; i < 3; i++) {
Future<String> future = pool.submit(() -> {
System.out.println("run1");
}, String.valueOf(i));

list.add(future);
}

for (int i = 0; i < 3; i++) {
Future future = pool.submit(() -> {
System.out.println("run2");
});

list.add(future);
}

for (Future<String> future : list) {
System.out.println(future.get());
}

pool.shutdown();

submit 还可以传递实现Runnable的对象

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java