Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >java 多线程Thread、Runnable和Callable的区别和用法

java 多线程Thread、Runnable和Callable的区别和用法

作者头像
全栈程序员站长
发布于 2022-07-23 06:08:48
发布于 2022-07-23 06:08:48
24400
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

文章目录

Callable 实现多线程

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
 
/*
 * 一、创建执行线程的方式三:实现 Callable 接口。 相较于实现 Runnable 接口的方式,方法可以有返回值,并且可以抛出异常。
 *
 * 二、执行 Callable 方式,需要 FutureTask 实现类的支持,用于接收运算结果。  FutureTask 是  Future 接口的实现类
 */
public class TestCallable {
 
    public static void main(String[] args) {
        ThreadDemo td = new ThreadDemo();
 
        //1.执行 Callable 方式,需要 FutureTask 实现类的支持,用于接收运算结果。
        FutureTask<Integer> result = new FutureTask<>(td);
 
        new Thread(result).start();
 
        //2.接收线程运算后的结果
        try {
            Integer sum = result.get();  //FutureTask 可用于 闭锁 类似于CountDownLatch的作用,在所有的线程没有执行完成之后这里是不会执行的
            System.out.println(sum);
            System.out.println("------------------------------------");
        } catch (InterruptedException | ExecutionException e) {
            e.printStackTrace();
        }
    }
 
}
 
class ThreadDemo implements Callable<Integer> {
 
    @Override
    public Integer call() throws Exception {
        int sum = 0;
 
        for (int i = 0; i <= 100000; i++) {
            sum += i;
        }
 
        return sum;
    }
 
}

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/126573.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年4月7,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
5.JUC线程高级-创建线程的第三种方式实现 Callable接口
执行Callable方式,需要FutureTask 实现类的支持,用于接收运算结果。FutureTask 是 Future 接口的实现类。
用户1212940
2022/04/13
1750
5.JUC线程高级-创建线程的第三种方式实现 Callable接口
Java多线程实现的几种方式
多进程是计算机中的一个重要概念,通常一个任务称为一个进程,比如浏览网页、播放音乐都是一个进程。
benym
2022/07/14
3720
面试官:除了继承Thread类和实现Runnable接口,你知道使用Callable接口的方式来创建线程吗?
终有救赎
2023/10/16
1940
面试官:除了继承Thread类和实现Runnable接口,你知道使用Callable接口的方式来创建线程吗?
6.实现 Callable 接口
6.实现 Callable 接口 前言 本篇章来介绍一下创建线程的第三种方式,其中创建线程一共有四种方式: 继承 Thread 类 实现 Runnable 接口 实现 Callable 接口 使用线程池的方式 那么下面我们来介绍一下 实现 Callable 接口的方式。 Callable 接口 - Java 5.0 在 java.util.concurrent 提供了一个新的创建执行线程的方式:Callable 接口 - Callable 接口类似于 Runnable,两者都是为那些其实例可能被另一个线程
Devops海洋的渔夫
2022/03/23
6000
6.实现 Callable 接口
java 多线程
就绪,当线程调用了strat()方法的时候,线程就绪,会为其创建方法调用栈和程序计数器。
mySoul
2018/11/19
8140
多线程之创建线程的方式之一:实现Callable接口(三)
对于多线程,大家并不陌生,对于如何创建线程也是轻车熟路,对于使用new thread和实现runable接口的方式,不再多说。这篇博文我们介绍第三种:实现Callable接口。
程序猿小亮
2021/01/29
3440
Callable 实现线程操作的第三种操作
FutureTask类实现了RunnableFuture接口,我们看一下RunnableFuture接口的实现
名字是乱打的
2022/05/13
1710
简单理解Callable接口
Callable,新启线程的一种方式,返回结果并且可能抛出异常的任务,在前面的新启线程的文章中用过,但是没有具体讲解
彼岸舞
2020/11/06
8680
Java多线程编程:Callable、Future和FutureTask浅析(多线程编程之四)「建议收藏」
java多线程-概念&创建启动&中断&守护线程&优先级&线程状态( 多线程编程之一) java多线程同步以及线程间通信详解&消费者生产者模式&死锁&Thread.join()( 多线程编程之二) java&android线程池-Executor框架之ThreadPoolExcutor&ScheduledThreadPoolExecutor浅析(多线程编程之三) Java多线程:Callable、Future和FutureTask浅析(多线程编程之四)
全栈程序员站长
2022/07/04
3010
Java多线程编程:Callable、Future和FutureTask浅析(多线程编程之四)「建议收藏」
多线程(四) | 聊聊Callable和Future
通过前面几篇文章,我相信大家应该对于如何使用多线程执行任务应该都有了一定的了解。今天我们来讲一讲Callable和Future。
一缕82年的清风
2022/11/02
5610
Java 之 JUC
CountDownLatch是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待;
张小驰出没
2021/04/15
3150
Java 之 JUC
JUC-(Java.util.concurrent)
Java8 在线API https://blog.fondme.cn/apidoc/jdk-1.8-google/
用户5927264
2019/09/09
7520
qt创建线程的几种方式_创建一个新线程的方法
(1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。
全栈程序员站长
2022/09/27
7390
Java多线程JUC
1. volatile 关键字 多线程访问的时候,一个比较严重的问题就是内存不可见,其实在内存访问的时候每一个线程都有一个自己的缓冲区,每次在做修改的时候都是从主存取到数据,然后放到自己的缓冲区中,在做完修改之后放回主存。这样每一个线程之间的变量是不可见的。造成读到的数据可能始终就是错误的,因此有一个关键字可以使得这个共享变量称为透明的。就好像所有的操作就直接是在内存中操作一样,因为他一直不停的去同步主存的数据。 2.原子性 i++ 这个运算,其实在底层低用的就是临时变量的方式,这样的话虽然是一个表达式,但
lwen
2018/04/17
5980
(修订)一道百度面试题的多种解法
java程序,主进程需要等待多个子进程结束之后再执行后续的代码,有哪些方案可以实现? 这个需求其实我们在工作中经常会用到,比如用户下单一个产品,后台会做一系列的处理,为了提高效率,每个处理都可以用一个线程来执行,所有处理完成了之后才会返回给用户下单成功,欢迎大家批评指正。
乔戈里
2019/04/24
3860
Callable与Future介绍
在Java中,创建线程一般有两种方式,一种是继承Thread类,一种是实现Runnable接口。然而,这两种方式的缺点是在线程任务执行结束后,无法获取执行结果。我们一般只能采用共享变量或共享存储区以及线程通信的方式实现获得任务结果的目的。不过,Java中,也提供了使用Callable和Future来实现获取任务结果的操作。Callable用来执行任务,产生结果,而Future用来获得结果。
HLee
2021/10/13
1K0
Callable与Future介绍
【多线程】JUC的常见类,Callable接口,ReentranLock,Semaphore,CountDownLatch
所以创建一个线程,希望它给你返回一个结果,那么使用 Callable 更加方便一些
椰椰椰耶
2024/09/20
830
【多线程】JUC的常见类,Callable接口,ReentranLock,Semaphore,CountDownLatch
Java 线程与多线程
一个进程上可以创建多个线程,线程比进程更快的处理单元,而且所占用的资源也小,多线程的应用也是性能最高的。
Mirror王宇阳
2020/11/12
2K0
多线程基础之Runnable/Thread与Callable
java.lang包下有二个非常有用的东西:Runnable接口与Thread类,Thread实现了Runnable接口(可以认为Thread是Runnable的子类),利用它们可以实现最基本的多线程开发。Runnable方式可以避免Thread 方式由于JAVA单继承特性带来的缺陷。Runnable的代码可以被多个线程(Thread实例)共享,适合于多个线程处理同一资源的情况。 线程的分类: 用户线程:运行在前台,执行具有的任务程序的主线程,连接网络的子线程等都是用户线程 守护线程:运行在后头,为其他前台
晚晴幽草轩轩主
2018/03/27
9370
java:多线程基础之Runnable、Callable与Thread
java.lang包下有二个非常有用的东西:Runnable接口与Thread类,Thread实现了Runnable接口(可以认为Thread是Runnable的子类),利用它们可以实现最基本的多线程开发。 一、Runnable入门示例 1 public class RunnableDemo1 { 2 3 public static void main(String[] args) { 4 new Runnable() { 5 public voi
菩提树下的杨过
2018/01/19
6200
java:多线程基础之Runnable、Callable与Thread
相关推荐
5.JUC线程高级-创建线程的第三种方式实现 Callable接口
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验