Java8使用Supplier启动ScheduledThread

5分钟了解Java 8 的 Supplier使用 文章目录一、Supplier是什么?二、lambda表达式的Supplier使用三、方法引用的supplier使用 一、Supplier是什么? 函数式接口(一个接口,只含有一个抽象方法) 属于java.util.function包 与之对应的consumer接受一个参数,然后什么都不返回。 @FunctionalInterface public interface Consumer<T> { /** * Performs this operation on the give 阅读详情

前言

项目开启立即启动定时任务是很多项目都会遇到的一个需求,如何利用Java提供的函数优雅的写出来,则十分考验一个猿人的功底。更多线程知识内容请点击【Java 多线程和锁知识笔记系列】。

Supplier + ScheduledExecutorService

Java8中给我们提供了一系列的函数式接口,能够活用这些函数式接口减少代码的冗余,使得代码更加易读就十分考验开发的功底,今天结合一个Run起来就批量启动的定时任务项目需求,做一个Supplier + ScheduledExecutorService的组合,直接贴代码供大家参考。

先简单写两个任务类作为模拟定时启动的任务。

public class ScheduleTask1 implements Runnable{
    @Override
    public void run() {
        System.out.println("++++++++++");
    }
}
public class ScheduleTask2 implements Runnable{
    @Override
    public void run() {
        System.out.println("-------------");
    }
}

启动方法,利用静态方法+Supplier直接启动定时线程池,并且把所有需要执行的任务添加到池子中,达到启动即执行的目的。

public class ScheduleTest {

    private static final ScheduleTask1 task1=new ScheduleTask1();
    private static final ScheduleTask2 task2=new ScheduleTask2();

	//利用静态方法+Supplier直接启动定时线程池,并且把所有需要执行的任务添加到池子中
    private static final ScheduledExecutorService schedulePool=((Supplier<ScheduledExecutorService>)()->{
        ScheduledExecutorService schedule= Executors.newScheduledThreadPool(2);
        schedule.scheduleAtFixedRate(task1,0,1,TimeUnit.SECONDS);
        schedule.scheduleAtFixedRate(task2,0,2,TimeUnit.SECONDS);
        return schedule;
    }).get();


    public static void main(String[] args) throws InterruptedException {
        System.out.println("Start");
    }
}
DOA估计算法从原理到仿真——CBF、Capon、MUSIC算法 从原理出发理解并实现经典的DOA估计算法 阅读详情

相关推荐

VC Spyglass CDC实战:如何快速定位和解决重汇聚问题(附详细调试步骤)

本文深入探讨了在SoC设计中利用VC Spyglass进行CDC验证时,如何高效定位和解决棘手的重汇聚问题。通过实战演练,详细解析了重汇聚的本质、VC Spyglass的检测逻辑,并提供了从报告筛选、GUI原理图分析到制定设计修复或约束豁免方案的全套调试步骤,帮助工程师快速攻克这一常见验证难题。

weixin_29219539的博客 753

Java8新特性:(五)Supplier简介

1、Supplier简介 supplier是Java8配合Lambda表达式和函数式接口编程组合使用的一个接口,对外表现为 :: 接口Supplier<T> 最适合表示工厂。带有Supplier<T> 的方法,通常应该限制输入工厂的类型参数使用有限制的通配符类型,以便客户端可以传入工厂,来创建制定类型的任意子类。 简而言之,Supplier<T>就是来创建对象的。 案例: import com.xian.dto.Person; import org.jun.

zx_1305769448的博客 5154

电脑版微信多开,最详细教程没有之一

首先桌面任意的位置右键新建文本文档输入如下代码: TASKKILL /F/IM WECHAT.EXE start " " "D:\Program Files (x86)\Tencent\WeChat\WeChat.exe" start " " "D:\Program Files (x86)\Tencent\WeChat\WeChat.exe" ...

大超子 4390

【Java8 新特性 3】Supplier简介

在Java8中增加的接口Supplier,最适合用于表示工厂。带有Supplier的方法,通常应该限制输入工厂的类型参数使用有限制的通配符类型,以便客户端能够传入一个工厂,来创建指定类型的任意子类型。 应该将这些资源或者工厂传给构造器(或者静态工厂、或者构建器),通过他们来创建类。这个实践就被称做依赖注入,它极大地提高了类的灵活性、可重用性和可测试性。 简而言之,Supplier就是用来创建对象的,相当于new。 2、代码实例 package com.guor.effective.chapter2.java

m0_69745415的博客 2255

Python新手必看:5分钟搞定睿尔曼机械臂基础控制(附代码示例)

本文为Python新手提供了快速上手睿尔曼机械臂基础控制的实战指南。通过详细的步骤讲解和代码示例,介绍了从环境搭建、网络配置、SDK安装到建立连接、执行关节运动(movej)、直线运动(movel)等核心控制指令的全过程,帮助零基础开发者快速实现机械臂的基础操控。

hp777的博客 328

微信小程序:errno: 600001, errMsg: “uploadFile:fail errcode:-101 cronet_error_code:-10001 error_msg:net::E

微信小程序报错uploadFile:fail errcode:-101 cronet_error_code:-10001 error_msg:net::ERR_CONNECTION_RESET, custum ip is invalid, didn't find user's ip,wx.uploadFile errno: 600001 errcode:-101 ?微信小程序wx.uploadFile错误,wx.uploadFile 在真机上报下面的错误,调试工具里没有问题,其它接口在真机/调试工具都正常,

✅ 精选推荐文章 4258

Java 8 Supplier函数式接口介绍及代码样例

供应商接口(Supplier Interface)是 Java 8 引入的 java.util.function 包的一部分,用于在 Java 中实现函数式编程。它表示一个函数,该函数不接收任何参数,但会产生一个类型为 T 的值。T:表示结果的类型分配给 Supplier 类型对象的 lambda 表达式用于定义其 get(),最终产生一个值。当我们不需要提供任何值并同时获得一个结果时,Supplier 就非常有用。

老徐的博客只有干货 1023

【数据集5】土地利用类型数量预测数据LUH2

简介土地利用类型数量预测数据LUH2

WW、forever的博客 4546

【Java 8 新特性】Java Supplier示例

JavaSupplier是一个功能接口,代表结果的提供者。 Supplier的功能方法是get()。 一个Supplier可以通过lambda表达式、方法引用或默认构造函数来实例化。

weixin_44674424的博客 1998

ABAP Channels 之 WebSocket 通信实践:用 ABAP Push Channel 打造实时应用

摘要:本文介绍了ABAP Push Channel(APC)技术,它通过WebSocket协议实现ABAP系统与外部客户端的实时双向通信。文章对比了传统HTTP轮询与WebSocket的差异,解释了APC的事件模型及其接口演进(从IF_APC_WS_EXTENSION到IF_APC_WSP_EXTENSION)。通过仓库拣货等实际案例,展示了APC在企业级应用中的价值,如实时监控、协作场景等。文中还详细阐述了ABAP引擎中WebSocket的交互模型,说明其资源优化设计原理,并提供了基础代码示例。该技术解决

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 293

高级图像增强——模拟雨天,雾,雪,阳光,阴影,运动模糊,畸变等14种效果,同步扩充标签文件

本文提供了一些高级的,特殊的图像增强方法,具体包括、光。

Limiiiing的博客 1308

Java 8之Supplier接口方法应用

函数式编程应该用在抽象层次高、复用多的场景,而不是单纯业务逻辑的简单使用(反而影响代码的可阅读性)。找到具体场景中的最佳实践才能发挥函数式编程最大优点。

sinat_31583645的博客 2434

openlayers:实现在连续更改时间维度时如何平滑地重新加载层 (附完整源码)

openlayers:实现在连续更改时间维度时如何平滑地重新加载层 (附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 347

Java8之Consumer、Supplier、Predicate和Function攻略

看完上面的实例我们可以总结为几点。① Consumer是一个接口,并且只要实现一个 accept 方法,就可以作为一个“消费者”输出信息。② 其实,lambda 表达式、方法引用的返回值都是 Consumer 类型,所以,他们能够作为 forEach 方法的参数,并且输出一个值。① Supplier 接口可以理解为一个容器,用于装数据的。② Supplier 接口有一个 get 方法,可以返回值。① Predicate 是一个谓词型接口,其实只是起到一个判断作用。

文盲青年的博客 2558

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Java 8 Supplier函数式接口介绍及实战案例

Supplier 是 Java 8 引入的一个函数式接口,它属于 java.util.function 包。Supplier 接口表示一个不接受任何参数但返回某种类型结果值的函数。它定义了一个 get() 方法,该方法没有参数,但返回一个泛型 T 类型的值。在某些情况下,你可能希望只有在真正需要结果时才进行计算或生成值。使用 Supplier,你可以将计算或生成值的逻辑封装在 get() 方法中,并在需要时调用它。

vvv3171071的博客 1610

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Java8中Function、Supplier、Consumer、Predicate接口用法

Function 接口是一个功能型接口,是一个转换数据的作用。Function 接口实现 apply 方法来做转换。Supplier 接口可以理解为一个容器,用于装数据的。Supplier 接口有一个 get 方法,可以返回值。Consumer是一个接口,并且只要实现一个accept方法,就可以作为一个消费者输出信息。其实,lambda 表达式、方法引用的返回值都是 Consumer 类型,所以,他们能够作为 forEach 方法的参数,并且输出一个值。

dont_curry的博客 1812

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Java 8 之 Consumer、Supplier、Predicate、Function

Test

qq_36218267的博客 2165

JAVA8函数之Supplier和Consumer接口使用理解

一.Supplier接口 顾名思义,这是一个供应商,提供者.就如一个工厂一样.该类的源码如下: package java.util.function; @FunctionalInterface public interface Supplier<T> { T get(); } 该接口就一个抽象方法get方法,该接口在 JAVA8之函数式接口返回实例篇中第一个示例就是利用的该接口.不用传入任何参数,直接返回一个泛型T的实例.就如同无参构造一样.示例...

qq_35946055的博客 2984

Java8 Consumer、Supplier、Predicate、Function

Java8 Consumer、Supplier、Predicate、Function

SmileLing的专栏 1340

Java8中的函数式接口Supplier、Consumer、BiConsumer详解

函数式编程是JDK1.8的新特性,函数式接口是函数式编程主要的体现,我们可以借助函数接口在函数调用时使用lambda表达式。 一、什么是函数式接口? 函数式接口是java8中新加入的一批接口,他们由@FutionalInterface注解标记的接口,我们可以在rt.jar包下的java.util.function包里找到有很多函数式接口,比如常用的函数式接口有Function、Supplier、consumer和Prdicate等。 我们可以发现,函...

Dream_it_possible!的博客 9323

带你学会Java的Supplier和Consumer接口的使用(详细版)

Java 8 引入的函数式接口(Functional Interface)为编程范式带来了革命性突破,其中Supplier与Consumer作为基础且高频使用的接口,在函数式编程模型中占据核心地位。理解二者的设计理念与应用场景,是提升代码质量、优化编程效率的关键环节。函数式接口的引入使 Java 具备了更灵活的抽象能力,Supplier 与 Consumer 分别封装了"数据供给"与"数据消费"的核心逻辑,为数据处理流程的解耦提供了标准化方案,极大增强了代码的可读性与可维护性。/**

java小白翻身 3268

java suppliers_java8的Supplier

TOCjava8的Supplierjava.util.function.Supplier定义supplier也是是用来创建对象的,但是不同于传统的创建对象语法:new,每次调用get()方法时都会调用构造方法创建一个新对象。public class TestSupplier {private int age;TestSupplier(){System.out.println(age);}publi...

weixin_36117191的博客 579

java8 函数式编程 Supplier 类 supplier如何使用 supplier类作用

3. 在阅读rocketmq 源码中CommitLog类doAppend方法有如下一段代码,产生了疑问,为什么使用supplier?,避免有其他异常,返回只包含错误信息的AppendMessageResult,msgId根本不需要了,此时计算出来msgId反而是一种性能浪费。:如果消息在发送后很快被取消或过滤掉,那么生成消息 ID 的计算就可以被完全避免,从而提高系统性能。,可以在消息真正需要被存储或处理时才生成 ID,避免了不必要的计算开销。:在消息发送的过程中,可能并不需要立即生成消息 ID。

求是 376

【Java】Jdk8函数接口Supplier、Function、Predicate、Consumer、BiFunction、BiPredicate、BiConsumer

Supplier、Function、Predicate、Consumer、BiFunction、BiPredicate、BiConsumer是Java函数式接口的一部分,它们用于定义不同类型的函数,从而在函数式编程中提供了更灵活的方式来处理数据。Supplier:表示一个供应商,它不接受任何参数,但返回一个结果。它的抽象方法为T get(),用于获取一个结果。Function:表示一个函数,它接受一个参数并返回一个结果。它的抽象方法为,用于将输入参数转换为输出结果。

zxcyxg123的博客 2309

Java 8供应商示例

在Java 8中, 供应商是一个功能接口; 它不接受任何参数并返回结果。 Supplier.java @FunctionalInterface public interface Supplier<T> { T get(); } 1.供应商 1.1此示例使用Supplier返回当前日期时间。 Java8Supplier1.java package co...

一名可爱的技术搬运工 557

JAVA8 六种线程池介绍

1.背景 执行一个异步任务我们可能只是如下new Thread: public static void main(String[] args) { new Thread(new Runnable() { @Override public void run() { System.out.println(Thread.currentThread().getName()); }

咸鱼想睡觉 807
上一篇: object references an unsaved transient instance的一个解决思路
下一篇: 简单实现一个Java的Retry方法
Smallc0de
博客等级 码龄15年 148粉丝 147原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值