execute(Runnable command) |
ExecutorService:是Executor接口衍生的子接口,主要用于并发线程池,其衍生ThreadPoolExecutor(线程池), ScheduledThreadPoolExecutor(定时线程池)
基本用法:ExecutorService 提供了一个工具方法:Executors。创建ExecutorService实例工具提供了以下几个方法:
new FixedThreadPool(int thread):创建一个固定线程大小的线程池,当所有线程都被使用时,线程将会处于等待状态,或者有明确的shutdown。
new CachedThreadPool():创建一个具有缓存功能的线程池。当缓存线程不够时会重新创建线程并放入线程池中,当超过60秒未使用则从缓存中清除。
newScheduledThreadPool(int corePoolSize):创建一个具有定时功能的线程池或延期执行。
newSingleThreadExcutor():创建单一线程线程池。线程数只为1,可用于多个线程操作同一文件。所有任务按顺序执行
ExecutorService有几个执行方式:
ExecutorService.execute(Runnable):接收一个Runnable实例并异步执行:
部分代码1.8写法:
ExecutorService.submit(Runnable):接收一个Runnable实例;该方法与execute区别在于会返回一个Futrue对象作为执行结果:Futrue futrue=ExecutorServcie.submit(Runnable) ;通过futrue.get()拿到执行结果。
ExecutorService.submit(Callable):接收一个Callable对象;返回Future。其中Callable拥有一个call()可以返回执行结果(run方法无返回值):
ExecutorService.invokAny(Callable):返回任务中一个执行结果具有随机性:
invokeAll(Callable):接收一个Callable实例,与invokeAny不同,这个是返回每一个任务的结果
在使用完executorService后应当关闭执行线程,否则线程会一直运行,shutdown()方法关闭线程(不会立即关闭),shutdownnow()会立即关闭线程。