网站建设资讯

NEWS

网站建设资讯

Java有几种方法开启线程?怎么实现带有返回值的线程?-创新互联

Java有几种方法开启线程?怎么实现带有返回值的线程?这些问题可能是我们日常工作会见到的。通过这些问题,希望你能收获更多。下面是揭开这些问题的详细内容。

成都创新互联公司自2013年创立以来,先为曹妃甸等服务建站,曹妃甸等地企业,进行企业商务咨询服务。为曹妃甸企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

一:无返回值类型的

1:继承Thread类

2:实现Runnable接口

这两种是大家常用的,代码demo就截图吧。

1:继承Thread类的写法

定义:一个类型需要extends thread类,然后实现thread类的run方法。

Java有几种方法开启线程?怎么实现带有返回值的线程?

编辑

2:实现Runnable接口的写法:

定义一个类,实现Runable接口,重新run方法。

New个thread对象,使用有参构造器,参数是runnable的。然后thread.start()

Java有几种方法开启线程?怎么实现带有返回值的线程?

编辑

二:带有返回值的

3:实现Callable接口

操作步骤:

一个类实现Callable接口,重新call方法;

在调用的时候,需要使用FutureTask这个类的有参构造,然后再使用thread的有参构造。

最后调用task的get方法。

代码如下:

Java有几种方法开启线程?怎么实现带有返回值的线程?

编辑

运行结果:

Java有几种方法开启线程?怎么实现带有返回值的线程?

编辑

Callable返回值的源码:

我们从FutureTask这个类入手,因为返回值就是从FutureTask中获取的。来看看类关系图:

Java有几种方法开启线程?怎么实现带有返回值的线程?

编辑

FutureTask实现了RunnableFuture接口,RunnableFuture接口继承了Future和Runnable接口。

Java有几种方法开启线程?怎么实现带有返回值的线程?

编辑

Java有几种方法开启线程?怎么实现带有返回值的线程?

编辑

我们看RunnableFuture这个接口的时候,发现只有一个无返回值的run方法。那么,线程返回的数据是哪个类实现的呢?其实就在FutureTask类里面。我们在来看看FuntrueTask这个类:

Java有几种方法开启线程?怎么实现带有返回值的线程?

编辑

重新了run方法。最后,有个set result。既然有set方法。在来看看demo中task.get()方法:

Java有几种方法开启线程?怎么实现带有返回值的线程?

编辑

Get方法就带有返回值的。

至此,实现callable接口带有返回值的原因已经找到了。

4:使用线程池创建线程

使用线程池创建的线程,可以有返回值,也可以没有返回值。使用Executory这个顶级接口来处理。

我们先来看看Executor接口的关系。如下图:

Java有几种方法开启线程?怎么实现带有返回值的线程?

编辑

其中看到了熟悉的ThreadPoolExecutor和ScheduledThreadPoolExecutor

4.1:使用Executor创建没有返回值得线程:

Java有几种方法开启线程?怎么实现带有返回值的线程?

编辑

说明:这里不带返回值的,其实就是调用了Runnable的run方法。

4.2:带有返回值的demo

创建一个类,实现Callable接口。如下图:

Java有几种方法开启线程?怎么实现带有返回值的线程?

编辑

通过这个接口,我们知道是有返回值的。

Java有几种方法开启线程?怎么实现带有返回值的线程?

Java中实现线程有4种方式:

我们最熟悉的不带换回值的两种以及带有返回值的两种。分别是:

Thread、Runnable和Callable以及线程池

关于开启java线程和实现带有返回值线程的方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果喜欢这篇文章,不如把它分享出去让更多的人看到。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站标题:Java有几种方法开启线程?怎么实现带有返回值的线程?-创新互联
分享路径:http://cdweb.net/article/hjejg.html