Thread-Per-Message模式的七种实现方式
java.lang.Thread类
最基本的创建、启动线程的类
java.lang.Runnable接口
表示线程所执行的“工作”的接口
java.util.concurrent.ThreadFactory接口
将线程创建抽象化了的接口
java.util.concurrent.Executor接口
将线程执行抽象化了的接口
java.util.concurrent.ExecutorService接口
将被复用的线程抽象化了的接口
java.util.concurrent.ScheduledExecutorService接口
将被调度的线程的执行抽象化了的接口
java.util.concurrent.Executors类
用于创建实例的工具类
类图
java.lang.Thread类
1 | public class Host { |
java.lang.Runnable接口
1 | public class Host { |
java.util.concurrent.ThreadFactory接口
java.util.concurrent.ThreadFactory接口声明了如下所示的一个newThread方法。
1 | Thread newThread(Runnable r); |
ThreadFactory是将线程创建抽象化了的接口,参数中的Runnable对象表示线程执行的操作内容。
Host.java
1 | import java.util.concurrent.ThreadFactory; |
Main.java
1 | import java.util.concurrent.ThreadFactory; |
java.util.concurrent.Executors类获取的ThreadFactory
java.util.concurrent.Executors类提供了许多的静态方法。Executors.defaultThreadFactory()表达式可以获取当前默认设置的ThreadFactory对象。
1 | import java.util.concurrent.Executors; |
java.util.concurrent.Executor接口
java.util.concurrent.Executor接口声明了如下所示的一个execute方法。
1 | void execute(Runnable r); |
Executor接口将某些“处理的执行”抽象化了,参数传入的Runnable对象表示“执行的处理”的内容。
Host.java
1 | import java.util.concurrent.Executor; |
Main.java
1 | import java.util.concurrent.Executor; |
java.util.concurrent.ExecutorService接口
java.util.concurrent.ExecutorService接口对可以反复execute的服务进行了抽象化。线程一直在后台运行着,每当调用execute方法时,线程就会执行Runnable对象。
1 | import java.util.concurrent.Executors; |
java.util.concurrent.ScheduledExecutorService接口
java.util.concurrent.ScheduledExecutorService接口是ExecutorService的子接口,用于推迟操作的执行。schedule方法位于ScheduledExecutorService接口中,可以用于设置Runnable对象(r)和延迟时间(delay、unit)。
1 | schedule(Runnable r, long delay, TimeUnit unit); |
long类型的delay表示的是延迟时间,TimeUnit类型的unit表示的则是指定延迟时间的单位(NANOSECONDS、MICROSECONDS、MILLISECONDS或SECONDS)。
Host.java
1 | import java.util.concurrent.ScheduledExecutorService; |
Main.java
1 | import java.util.concurrent.Executors; |