创建一个线程池:
-
Callable接口来作线程池。
-
步骤:
-
1.创建一个线程池做对象。
-
2.创建线程任务对象,Callable对象。
-
3.submit(Callable call),把线程任务对象提交给线程池,线程池会自动创建线程对象,并启动。
-
4.通过提交一个任务对象:Future<String> task1.
-
5.最终通过task获取线程的执行结果。
-
*/
public class ThreadPoolsDemo02 {public static void main(String[] args) throws ExecutionException, InterruptedException {
//1.创建一个线程池对象。
ExecutorService pools= Executors.newFixedThreadPool(3);//2.创建一个线程任务对象,Caillable对象。 Callable<String> callable=new Callable<String>() { @Override public String call() throws Exception { int count=0; for (int i = 0; i < 3; i++) { count+=i; } return "和是:"+count; } }; //3.把任务提交给线程池,线程池会自动创建线程对象并启动线程。 Future<String> tassk1=pools.submit(callable); Future<String> tassk2=pools.submit(callable); Future<String> tassk3=pools.submit(callable); //线程已将满了,这次不会去创建新线程,复用之前的线程。 Future<String> tassk4=pools.submit(callable); //4.输出返回值。 System.out.println(tassk1.get()); System.out.println(tassk2.get()); System.out.println(tassk3.get()); System.out.println(tassk4.get());
}
}