新增实现方式之实现Callable接口
特点
1、可以有返回值。
2、方法可以抛异常。
3、支持泛型的返回值。
4、需借助FutureTask类,比如获取返回值。
步骤
1、创建一个实现Callable接口的实现类。
2、重写call方法, 将此线程需执行的操作声明在call()中。
3、创建Callable接口实现类的对象。
4、将Callable 接口实现类的对象传递到FutureTask构造器中,创建Future Task的对象。
5、将FutureTask的对象作为参数传递到Thread类的构造器中,创建Thread对象,并调用start()。
6、获取Callable 中call()的返回值。
方法
get():获取返回值
新增实现方式之创建线程池
步骤
1、提供指定线程数量的线程池。例:
ExecutorService service = Executors. newFixedThreadPool(线程数);
2、执行指定的线程操作,需提供实现Runnable接口或Callable接实现类的对象。例:
t.execute(Runnable runnable):
3、关闭连接池
好处
1、提高响应速度(减少创建新线程的时间)。
2、降低资源消耗(重复利用线程池中的线程,不须重复创建)。
3、便于线程管理。
① core Poolsize:核心池的大小
②maximumPoolsize:最大线程数
③keepAliveTime:线程没有任务时最多保持多长时间后终止。
线程池相关API:ExecutorService和Executors
ExceutorService:真正的线程池接口
①void execute(Rumable runnable):执行任务/命令,无运回值,用来执行Runnuble接口的实现类。
②<T>Future<T> submit(Callable<T> task):有返回值,用来执行Callable接口的实现类。
③void shutdown():关闭连接池
Exeecutors:工具类,用来创建并返回不同类型的线程池
① new CachedThreadPool():创建任意数量线程的线程池。
② new FixedThread Pool():创建一个固定线程的线程池。
③ new SingleThread Excutor():创建只有一个线程的线程池。
④new ScheduledThreadPool(n):创建一个线程池,可安排在给定延迟后行命令或定期地执行。