线程组:
和线程池的创建有关系
public static ExecutorService newFixedThreadPool(int nThreads) 创建一个可重用固定线程数的线程池
ExecutorService:可以执行异步任务
创建一个线程池,执行接口中的方法
提交:Future<?> submit(Runnable task)
<T> Future<T> submit(Callable<T> task)提交一个返回值的任务用于执行,返回一个表示任务的未决结果的 Future
Future:接口
Future 表示异步计算的结果
线程池调用完毕可以关闭的
线程组表示一个线程的集合。此外,线程组也可以包含其他线程组
线程池(某个线程执行完毕,反复利用线程对象)
所有的线程它默认的线程组名称:main(主线程)
常用方法:
public ThreadGroup(String name)构造一个新线程组
public Thread(ThreadGroup group, Runnable target, String name) 构造新的线程
public final ThreadGroup getThreadGroup()返回该线程所属的线程组
public final String getName():返回线程组的名称
线程池:多个线程执行完毕,它会重新回到线程池中,等待被利用,不会变成垃圾!
和线程池有关的类
Executors: 一种工厂类
方法:和线程池的创建有关系
public static ExecutorService newFixedThreadPool(int nThreads) 创建一个可重用固定线程数的线程池
ExecutorService:可以执行异步任务
创建一个线程池,执行接口中的方法
提交:Future<?> submit(Runnable task)
<T> Future<T> submit(Callable<T> task)提交一个返回值的任务用于执行,返回一个表示任务的未决结果的 Future
Future:接口
Future 表示异步计算的结果
线程池调用完毕可以关闭的
void shutdown():关闭之前,会提交刚才的任务
public class ExecutorsTest { public static void main(String[] args) throws InterruptedException, ExecutionException { ExecutorService pool=Executors.newFixedThreadPool(2); Future<Integer> f1=pool.submit( new MyCallable(100)); Future<Integer> f2 = pool.submit(new MyCallable(100)); Integer i1 = f1.get(); Integer i2 = f2.get(); System.out.println(i1); System.out.println(i2); pool.shutdown(); } }