- 博客(6)
- 资源 (1)
- 收藏
- 关注
原创 java 并发编程 - ExecutorService
背景为了能够方便的使用线程池,java提供的简单的实现方式。但是《阿里巴巴Java开发手册》中不建议使用。具体描述如下。单一工作线程线程池单一工作线程线程池,实现源码如下public static ExecutorService newSingleThreadExecutor() { return new FinalizableDelegatedExecutorService (new ThreadPoolExecutor(1, 1,
2020-07-30 14:14:41 200
原创 深入理解线程池ThreadPoolExecutor - 问题整理
execute 和 submit 区别和联系很多博客都有提到线程池ThreadPoolExecutor 中提交任务的接口 execute和submit的区别。基本都是从返回值和异常的角度去看问题,但是我个人觉得没有讲到其本质区别,或者说讲的内容太浅,容易造成错误。首先submit类的接口源码位于ThreadPoolExecutor 的父类AbstractExecutorService中,源码如下: public <T> Future<T> submit(Callable&l
2020-07-28 14:41:48 483
原创 深入理解线程池 - ThreadPoolExecutor
线程是稀缺资源,创建线程,需要申请一定量的内存空间,具体申请多大主要取决于JVM虚拟机,由于对JVM不是很熟悉,后面有机会的时候了解一下,创建一个空线程,到底向虚拟机申请了多大的内存空间,如何通过命令查看,已经运行时如何查看。使用线程池的目的:线程是稀缺资源,不能频繁创建。解耦作用,将线程的创建和运行分开, 方便维护对线程进行复用。线程池肯定不是万能的,它适用于以下场景:线程之间是独立的,不依赖于其他线程的执行时序,执行结果。线程执行的任务在较短时间内可以完成线程的创建数量具有不确定性
2020-07-27 10:33:09 123
原创 Java并发编程笔记-自定义Runnable
RunnableRunnable 是一个接口,是线程的执行体。源码非常的简单。public interface Runnable{ public abstract void run();}为了应对复杂的场景,需要对Runnable进行简单的自定义,下面就描述两种场景,已经我对这两种场景的思考。场景1:获取线程(执行体)的执行结果。场景2:优雅的停止线程。获取线程(执行体)的执行结果注意本文中的执行体可能是Runnable 中的run方法或者Callable中的Call方法。线程的执行结
2020-07-23 21:13:59 774
原创 深入理解Java线程的创建
最近再次阅读了java并发编程的相关书籍和文档,以此为机会对自己学习到的知识做一个总结。创建线程很多博客说创建线程有两种方式一种是通过java.lang.Thread来实现,一种是实现接口java.lang.Runnable。对此有我不同的想法。我认为创建线程只有一种方式那就是通过java.lang.Thread来实现。接口java.lang.Thread只是编写了线程的执行体。最终创建线程还是需要通过Thread来实现。使用Runnable的例子实现Runnable接口 class M
2020-07-23 10:26:26 111
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人