java 多线程之executor简单了解

Executor:接口,大批量并发执行框架,其衍生子接口 ExecutorServiceScheduledExecutorService  。执行一个传入Runnable的:
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()会立即关闭线程。

猜你喜欢

转载自blog.csdn.net/qq_28834183/article/details/80434235