
多线程
文章平均质量分 62
qingtian211
这个作者很懒,什么都没留下…
展开
-
JUC源码解析(1)---- ThreadPoolExecutor 实现原理、execute()实现
线程池类结构图:ThreadPoolExecutorJava.util.concurrent.ThreadPoolExecutor类是ExecutorSerivce接口的具体实现。ThreadPoolExecutor使用线程池中的一个线程来执行给定的任务(Runnable或者Runnable)。ThreadPoolExecutor对象,具体参数描述如下:corePoolSize...原创 2018-08-19 22:42:10 · 559 阅读 · 0 评论 -
JUC源码解析(2)----线程池之 newFixedThreadPool()
JDK 为我们内置了四种常见线程池的实现,均可以使用 Executors 工厂类创建。1.newFixedThreadPool上面这两个方法是创建固定数量的线程池的两种方法,两者的区别是:第二种创建方法多了一个线程工厂的方法。我们继续看ThreadPoolExecutor这个类中的构造函数:FixedThreadPool 被称为可重用固定线程数的线程池。 ...原创 2018-08-20 10:54:57 · 338 阅读 · 0 评论 -
JUC源码解析(3)----线程池之 newCachedThreadPool()
newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。通过调用Executors类的静态newCachedThreadPool()方法可以获得缓存的线程池。语法ExecutorService executor = Executors.newCachedThreadPool();Java其中,n...原创 2018-08-20 11:16:37 · 671 阅读 · 0 评论 -
JUC源码解析(4)----线程池之 newSingleThreadExecutor()
可以通过调用Executors类的static newSingleThreadExecutor()方法获得单个线程池。语法ExecutorService executor = Executors.newSingleThreadExecutor();JavanewSingleThreadExecutor()方法创建一次执行单个任务的执行程序。创建一个单线程的线程池。这个线...原创 2018-08-20 11:28:04 · 907 阅读 · 0 评论 -
JUC源码解析(5)----线程池之 newScheduledThreadPool()
初始化的线程池可以在指定的时间内周期性的执行所提交的任务,在实际的业务场景中可以使用该线程池定期的同步数据。1、创建延时任务线程池的Excutors源码,ScheduledThreadPoolExecutor实现了ScheduleExecutorService接口。2、ScheduledThreadPoolExecutor源码,ScheduledThreadPoolExecutor继承...原创 2018-08-20 13:38:34 · 2263 阅读 · 0 评论 -
JUC源码解析(1)---- ThreadPoolExecutor 实现原理、submit()实现
通过ExecutorService.submit()方法提交的任务,可以获取任务执行完的返回值。在实际业务场景中,Future和Callable基本是成对出现的,Callable负责产生结果,Future负责获取结果。1、Callable接口类似于Runnable,只是Runnable没有返回值。2、Callable任务除了返回正常结果之外,如果发生异常,该异常也会被返回,即Future可...原创 2018-08-20 14:02:13 · 496 阅读 · 0 评论 -
java 多线程实现源码解析
转发自:https://blog.youkuaiyun.com/hzw19920329/article/details/52372348最近在看java线程池实现方面的源码,在此做个小结,因为网上关于线程池源码分析的博客挺多的,我也不打算重复造轮子啦,仅仅用纯语言描述的方式做做总结啦! 个人认为要想理解清楚java线程池实现原理,明白下面几个问题就可以了: (1):...转载 2018-08-27 16:33:18 · 1011 阅读 · 0 评论 -
JUC源码解析----- 线程池之 FutureTask类
1、FutureTask 概念FutureTask一个可取消的异步计算,FutureTask 实现了Future的基本方法,提供了 start () 、cancel()操作,可以查询计算是否已经完成,并且可以获取计算的结果。结果只可以在计算完成之后获取,get方法会阻塞当计算没有完成的时候,一旦计算已经完成,那么计算就不能再次启动或是取消。一个FutureTask 可以用来包装一个 Cal...转载 2018-08-20 14:25:25 · 314 阅读 · 0 评论