原创

线程

一、创建线程的四种方式

Java多线程实现方式主要有四种:

继承Thread类、 实现Runnable接口、

实现Callable接口通过FutureTask包装器来创建Thread线程、

使用ExecutorService、Callable、Future实现有返回结果的多线程。

其中前两种方式线程执行完后都没有返回值,后两种是带返回值的。

Runnable和Callable的区别

Runnable接口

public interface Runnable {

void run();

}

1

2

3

Callable接口

public interface Callable<V> {

V call() throws Exception;

}

1

2

3

Runnable和Callable的区别

Runnable执行方法是run(),Callable是call()

实现Runnable接口的任务线程无返回值;实现Callable接口的任务线程能返回执行结果

call方法可以抛出异常,run方法若有异常只能在内部消化

注意

Callable接口支持返回执行结果,需要调用FutureTask.get()方法实现,此方法会阻塞主线程直到获取结果;当不调用此方法时,主线程不会阻塞!

如果线程出现异常,Future.get()会抛出throws InterruptedException或者ExecutionException;如果线程已经取消,会爬出CancellationException

---------------------

作者:刘运召

来源:CSDN

原文:https://blog.csdn.net/Liu_yunzhao/article/details/78504287

版权声明:本文为博主原创文章,转载请附上博文链接!

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • LRU && LFU

    大学里的混子
  • Future && FutureTask

    线程的创建方式中有两种,一种是实现Runnable接口,另一种是继承Thread,但是这两种方式都有个缺点,那就是在任务执行完成之后无法获取返回结果,于是就有了...

    大学里的混子
  • 操作系统

    线程调度是指系统为线程分配处理器使用权的过程,主要调度方式分两种,分别是协同式线程调度和抢占式线程调度。

    大学里的混子
  • 为什么要用线程池

    池化技术相比大家已经屡见不鲜了,线程池、数据库连接池、Http 连接池等等都是对这个思想的应用。池化技术的思想主要是为了减少每次获取资源的消耗,提高对资源的利用...

    崔笑颜
  • 【80期】说出Java创建线程的三种方式及对比

    上述代码中Thread.currentThread()方法返回当前正在执行的线程对象。GetName()方法返回调用该方法的线程的名字。

    良月柒
  • 新手学JAVA(十)-多线程----线程的创建和启动

    通过继承Thread类或实现Runnable、Callable接口都可以实现多线程。不过实现Runnable和实现Callable的方式基本相同,只不过Cal...

    令仔很忙
  • 多线程编程学习十(线程池原理).

    tips:这样的设计方案,可以避免频繁的线程创建,大部分的工作任务都会停留在第二步。

    JMCui
  • Java中实现多线程的3种方法介绍和比较

    黄小怪
  • 实现线程的方式到底有几种?

    这篇文章主要讲解实现线程的方式到底有几种?以及实现 Runnable 接口究竟比继承 Thread 类实现线程好在哪里?

    武培轩
  • java中Runnable和Callable的区别

    在java的多线程开发中Runnable一直以来都是多线程的核心,而Callable是java1.5添加进来的一个增强版本。

    程序那些事

扫码关注云+社区

领取腾讯云代金券