美文网首页面试题
多线程的几种实现方式

多线程的几种实现方式

作者: 成虎日记 | 来源:发表于2021-01-10 10:33 被阅读0次

Java多线程的几种实现方式:

1.继承Thread类,重写run方法

2.实现Runnable接口,重写run方法,实现Runnable接口的实现类的实例对象作为Thread构造函数的target

3.通过Callable和FutureTask创建线程

4.通过线程池创建线程  (上一篇已经讲过了)

前面两种可以归结为一类:无返回值,原因很简单,通过重写run方法,run方式的返回值是void,所以没有办法返回结果

后面两种可以归结成一类:有返回值,通过Callable接口,就要实现call方法,这个方法的返回值是Object,所以返回的结果可以放在Object对象中

直接上代码操作:

2.实现Runnable接口,重写run方法,实现Runnable接口的实现类的实例对象作为Thread构造函数的target

线程实现方式3:通过Callable和FutureTask创建线程 

a:创建Callable接口的实现类 ,并实现Call方法 

b:创建Callable实现类的实现,使用FutureTask类包装Callable对象,该FutureTask对象封装了Callable对象的Call方法的返回值 

c:使用FutureTask对象作为Thread对象的target创建并启动线程 

d:调用FutureTask对象的get()来获取子线程执行结束的返回值

线程实现方式4:通过线程池创建线程

通过线程池方式创建的线程:pool-1-thread-1

通过线程池方式创建的线程:pool-1-thread-5

通过线程池方式创建的线程:pool-1-thread-4

通过线程池方式创建的线程:pool-1-thread-3

通过线程池方式创建的线程:pool-1-thread-2

通过线程池方式创建的线程:pool-1-thread-3

通过线程池方式创建的线程:pool-1-thread-4

通过线程池方式创建的线程:pool-1-thread-5

通过线程池方式创建的线程:pool-1-thread-1

通过线程池方式创建的线程:pool-1-thread-2

ExecutorService、Callable都是属于Executor框架。返回结果的线程是在JDK1.5中引入的新特征,还有Future接口也是属于这个框架,有了这种特征得到返回值就很方便了。

通过分析可以知道,他同样也是实现了Callable接口,实现了Call方法,所以有返回值。这也就是正好符合了前面所说的两种分类

执行Callable任务后,可以获取一个Future的对象,在该对象上调用get就可以获取到Callable任务返回的Object了。get方法是阻塞的,即:线程无返回结果,get方法会一直等待。

再介绍Executors类:提供了一系列工厂方法用于创建线程池,返回的线程池都实现了ExecutorService接口

相关文章

  • 多线程(最全面试题04)

    Java实现线程有哪几种方式?1、继承Thread类实现多线程2、实现Runnable接口方式实现多线程3、使用E...

  • 创建线程的方式

    1创建线程的几种方式a.继承Thread类实现多线程b.实现Runnable接口方式实现多线程c.使用Execut...

  • Q&A-04 多线程&分布式

    1、Java实现多线程有哪几种方式 Java 多线程实现方式主要有四种: 继承Thread类 实现Runnable...

  • 2021-01-26

    实现多线程的方式到底有几种?1.如何创建多线程方式一:继承Thread类方式二:实现Runnable接口继承Thr...

  • 多线程经典面试题及答案

    java实现线程有哪几种方式 1.继承Thread类实现多线程2.实现Runnable接口方式实现多线程3.使用线...

  • 多线程的热点问题

    1.多线程有几种实现方式 1.继承Thread实现多线程 2.通过Runnable实现多线程 3.使用Callab...

  • FutureTask实现原理

    在 多线程实现方式 文中讲述了几种开启多线程的方式,每种方式都有其特定的使用场景,本文将剖析带有返回值的线程实现方...

  • iOS面试题总结整理(附答案-持续更新)

    iOS面试题总结整理(附答案) 多线程的实现方式;iOS中实现多线程的方案有4种 延迟执行的几种方式;延迟1秒执行...

  • iOS 模块分解—「Thread 多线程」

    引导 谈到多线程,想必大家第一反应就是多线程常用的几种实现方式。其中 NSThread、GCD、NSOperati...

  • Java多线程知识点

    1.java中实现多线程的几种方式 java中实现多线程的方式主要有两种,第一种是继承Thread类,第二种是实现...

网友评论

    本文标题:多线程的几种实现方式

    本文链接:https://www.haomeiwen.com/subject/xsgraktx.html