package duoxianchenyichang;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
public class Demo {
public static void main(String[] args) {
ExecutorService executorService = Executors.newFixedThreadPool(1);
ExecutorService executorService_ = Executors.newFixedThreadPool(5);
List<Future<String>> list_ = new ArrayList<Future<String>>();
List<Future<String>> list = new ArrayList<Future<String>>();
List<String> result = new ArrayList<String>();
Random random = new Random();
Future<String> submit = executorService.submit(new Callable<String>() {
@Override
public String call() throws Exception {
int i = 0;
for(i = 0;i<100;i++) {
Future<String> submit2 = executorService_.submit(new Callable<String>() {
@Override
public String call() throws Exception {
result.add((random.nextInt(100))+"");
Thread.sleep(1000);
return "2";
}
});
list.add(submit2);
for (Future<String> future : list) {
future.get();
}
}
return "1";
}
});
list_.add(submit);
for (Future<String> fu : list_) {
try {
String string = fu.get(3000, TimeUnit.MILLISECONDS);
System.out.println(string);
} catch (Exception e) {
e.printStackTrace();
}finally {
executorService_.shutdown();
executorService.shutdown();
}
}
System.out.println(result.toString());
}
}