2021SC@SDUSC
这是第十一篇代码分析的博客,到目前为止我们小组的core文件夹里的代码分析已经完成。在这一篇博客中,我将分析一些不太重要的代码,分析的代码为与thread有关的两个文件夹,分别是thread-api和thread-impl,一个是关于线程的接口,一个是关于线程的实现。
文章目录
thread-api
在这个文件夹中一共有三个java接口,分别是RunnableManager,ThreadFactory,ThreadPool。这些接口是用于线程工厂和池以及执行后台任务的接口。
RunnableManager
RunnableManager接口描述了在后台运行命令的实现的功能。
- 主要属性
- ROLE:String类型,用于表示角色名称
- 主要方法
createPool()
- 该方法被重载了,返回值为ThreadPool。如果传入的参数有线程池的名字,则主要作用是使用特定的ThreadFactory创建一个共享ThreadPool;如果传入的参数没有线程池的名字,则作用为创建一个带有特定ThreadFactory的私有ThreadPool。其他;两个方法相同的参数大多都是一些对线程的描述。
getPool()
- 该方法的返回值值也是ThreadPool,这个方法的主要作用是获取ThreadPool线程池。
excute()
- 无返回值,该方法被重载了很多次,大多数的作用为在后台立即执行一个可运行程序,除了一个含有参数interval的方法作用有些不同,作用为在后台延迟和重复执行一个可运行程序,其中interval为重复运行的间隔时间。这些方法都有一个共同的参数:threadPoolName——要使用的线程池。
remove()
- 返回值为空,有一个参数command——需要删除的命令,作用是从执行堆栈中删除一个可运行的命令。
ThreadFactory
ThreadFactory接口描述了工厂为RunnableManager的threadpool创建线程的职责
- 主要方法
getPriority()
- 返回值类型为int,用于获取新创建线程的优先级
isDaemon()
- 返回值类型为boolean,用于获取线程将要创建的守护模式