JAVA并发编程之“线程的其他创建方法”

承接上回线程初始化,先将其他创建线程的方法列举如下:

1、实现Runnable接口

实际上,实现runnable的类是作为线程任务类而存在的。

JAVA并发编程之“线程的其他创建方法”_第1张图片
图1 实现runnable接口

从图中可以看出,将类作为Thread构造方法中的runnable方法传入,然后再初始化线程

图2 thread类构造方法

Thread thread = new Thread(Runnable target)

thread.start()实际上是调用Thread类的run方法,实际上存在即合理,不同的业务场景运用不同的方法实现。

但JAVA推荐面向接口编程,让代码解耦,所以推荐线程实现runnable接口。

2、内部匿名类创建线程

我们可以使用内部类来创建线程

JAVA并发编程之“线程的其他创建方法”_第2张图片
图3 内部类创建线程

此例子中,在内部新建了一个类Thread,同时将一个重现run方法的Runnable类作为参数传入Thread的构造方法中,但是又重新写了创建新类的run方法,你知道最后的结果是什么吗?

3、带返回值的线程

创建一个线程带返回值,需要实现Callable接口,此接口需要实现一个计算方法Call().

JAVA并发编程之“线程的其他创建方法”_第3张图片
图4 带返回值的线程创建

我们可以从中看到,实现Callable接口之后,我们在主函数里面用FutureTask方法来对返回线程进行计算和捕获。因为FutureTask是实现RunnableFuture接口,而RunnableFuture继承Runnable类。所以我们可以直接看到其可以直接当成Thread类的构造方法参数传入。

4、定时器实现线程

定时器是非常重要的工具,广泛使用于各种框架之中。

JAVA并发编程之“线程的其他创建方法”_第4张图片
图5 定时器创建定时线程任务

从上图中可以看到,定时器引用了Time类,并且用到了time类中的schedule方法。

JAVA并发编程之“线程的其他创建方法”_第5张图片
图6 time主要方法

而time类中schedule有各种各样的定时任务方法,有隔一段时间运行的,有执行时间运行等等。

5、线程池的实现

在实际工作中,我们运行线程都是用线程池进行管理,不大可能像本机调试那般练习单笔或者多笔线程。我们要确保我们服务器资源的合理使用,并减少连接过程的消耗。

JAVA并发编程之“线程的其他创建方法”_第6张图片
图7 线程池构建线程

线程池主要是构建一个“池子”用来创建线程,图中的newCachedTreadPool需要创建线程的时候即创建,并且能够重新使用之前构建好的线程当其空闲可供使用的使用。从图片中右边可以看出,我们创建500个线程,但是最高数据只是100多,可见线程在重新利用之中。

JAVA并发编程之“线程的其他创建方法”_第7张图片
图8 newCachedThreadPool方法

你可能感兴趣的:(JAVA并发编程之“线程的其他创建方法”)