首页 > 其他分享 >JUC系列之(六)实现Callable接口

JUC系列之(六)实现Callable接口

时间:2024-02-29 19:36:32浏览次数:26  
标签:JUC integerFutureTask ThreadDemoA 接口 Callable FutureTask 返回值

实现Callable接口

创建执行线程的第三种方式,共四种

比较Runnable和Callable:

  1. Callable方法可以有返回值,并且可以抛出异常。
  2. 由于Callable的方法有返回值,需要FutureTask的支持,用于接收运算结果。FutureTask 是 Future接口的实现类。

使用

package com.atguigu.juc;

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

public class TestCallable {
    public static void main(String[] args) {
        ThreadDemoA threadDemoA = new ThreadDemoA();

        // 由于Callable的方法有返回值,需要FutureTask的支持,用于接收运算结果。FutureTask 是 Future接口的实现类
        FutureTask<Integer> integerFutureTask = new FutureTask<Integer>(threadDemoA);
        new Thread(integerFutureTask).start();

        try {
            // FutureTask具有闭锁特性,等待线程执行完后再获取结果
            Integer integer = integerFutureTask.get();
            System.out.println(integer);
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }
    }
}

class ThreadDemoA implements Callable<Integer> {

    // 有返回值,并且可以抛出异常
    @Override
    public Integer call() throws Exception {
        int sum = 0;

        for (int i = 0; i < 100; i++) {
            sum += i;
        }
        return sum;
    }
}

标签:JUC,integerFutureTask,ThreadDemoA,接口,Callable,FutureTask,返回值
From: https://www.cnblogs.com/wzzzj/p/18045239

相关文章

  • JUC系列之(五)CountDownLatch闭锁
    CountDownLatch闭锁闭锁:延迟当前线程的进度,直到其他线程都执行完成当前线程才继续执行。示例:计算多线程操作耗费时间以下操作时无法正常计算多线程操作耗时的packagecom.atguigu.juc;publicclassTestCountDownLatch{publicstaticvoidmain(String[]args){......
  • JUC系列之(四)ConcurrentHashMap锁分段机制
    ConcurrentHashMap锁分段机制1.关于HashMap和HashTableHashMap:线程不安全HashTable:效率低:操作时锁整个表复合操作会带来安全问题//table.contains()和table.put()分别都是加了锁的,但是像下述复合操作,一个线程判断完之后CPU可能被其他线程抢夺,带来安全问题if(!table.c......
  • JUC系列之(三)原子变量
    原子变量-CAS算法1.i++的原子性问题i++的计算原理:读-改-写inttemp=i;i=i+1;将i++赋给其他变量的时候会将temp的值赋给其他变量,比如:inti=10;i=i++;//这里i的值就是10,i++的值实际上就是临时变量temp的值i++的原子性问题实例packagecom.atguigu.juc;......
  • JUC系列之(二)volatile关键字
    volatile关键字-内存可见性引出内存可见性问题的示例:packagecom.atguigu.juc;publicclassTestVolatile{publicstaticvoidmain(String[]args){//线程threadDemo修改共享变量的值ThreadDemothreadDemo=newThreadDemo();newThrea......
  • php 对接vivo 用户行为数据上传接口
    vivo文档:https://open-ad.vivo.com.cn/doc/index?id=217publicfunctionvivo(){$accessToken=$this->request->param('accessToken');$srcId=$this->request->param('srcId');$cvType=$this->request-......
  • 求求你别再用OkHttp调用API接口了,快来试试这款HTTP客户端库吧
    引言在日常业务开发中,我们时常需要使用一些其他公司的服务,调用第三方系统的接口,这时就会涉及到网络请求,通常我们可以使用HttpClient,OkHttp等框架去完成网络请求。随着RESTfulAPI的普及,一个高效、简洁且易于维护的HTTP客户端库显得尤为关键。而本文主要介绍一款强大的网络客户端......
  • 小程序开发:接入腾讯云的人像动漫化api接口
    接口如下: 图片的传参方式有两种,一种是传图片的base64,一种是图片url: 我打算免费版使用base64,如果付费用户支持永久存储历史的图片记录(图片存储到腾讯云对象存储中)。前端框架我用的uview,所以我在页面简单使用了uview的上传组件,拿到图片本地路径后再转成base64,腾讯云的api......
  • Shopee虾皮api接口 搜索商品、评价信息 python数据采集
    iDataRiver平台https://www.idatariver.com/zh-cn/提供开箱即用的Shopee电商数据采集API,供用户按需调用。接口使用详情请参考Shopee接口文档接口列表1.获取单个商品详情,包括销量、库存等参数类型是否必填默认值示例值描述apikeystring是idr_***从控制台......
  • springboot中实现一个接口
    实现一个接口,需要在service里写一个接口,写一个实现,在controller里写一个类chatgpt4.0:在Spring框架中,实现一个接口通常遵循一种分层的架构模式,这种模式涉及到至少三个主要部分:接口定义、服务层实现、以及控制器层。这个流程确保了应用程序的高内聚、低耦合特性,同时也符合Spring......
  • spring中接口流量的控制
    防止接口同一时间内对一个接口进行频繁的访问,可以对接口进行限流。1.自定义注解,用来标识需要限流的接口。packagecom.springweb.demo.limit;importjava.lang.annotation.ElementType;importjava.lang.annotation.Retention;importjava.lang.annotation.RetentionPo......