返回顶部
首页 > 资讯 > 后端开发 > Python >springboot如何开启一个监听线程执行任务
  • 627
分享到

springboot如何开启一个监听线程执行任务

springboot监听监听线程执行任务springboot线程监听 2023-02-28 14:02:48 627人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录SpringBoot开启一个监听线程执行任务springboot中监听事件的创建流程事件的大体步骤第一种第二种第三种总结springboot开启一个监听线程执行任务 public

springboot开启一个监听线程执行任务

public class StartApplicationListener implements ApplicationListener<ContextRefreshedEvent> {

    @Override
    public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
        ApplicationContext applicationContext = contextRefreshedEvent.getApplicationContext();
        ApplicationContext parent = applicationContext.getParent();
        if (parent == null) {
            CacheManager cacheManager = applicationContext.getBean(CacheManager.class);
            Cache cache = cacheManager.getCache(MsConstants.node_CACHE_NAME);
           new Thread(new Runnable() {
               @Override
               public void run() {
                  //代码
                 
               }
           }).start();
        }
    }
public static void main(String[] args) {
    SpringApplication app = new SpringApplication(FigureServerApplication.class);
    app.addListeners(new StartApplicationListener());
    app.run(args);
}

springboot中监听事件的创建流程

事件监听有同步和异步两种方式,springboot项目中提供了一个用于异步处理的注解:@Async。

事件的大体步骤

  • 1:定义一个事件。
  • 2:  创建一个监听器。
  • 3:确保监听器在容器内。
  • 4:发布事件,进行测试

废话不多说,简单叙述几个不同方式的demo。

首先,我们先创建一个springboot项目。

第一种

1:定义一个事件,需要继承ApplicationEvent

public class MyEvent extends ApplicationEvent {
    public MyEvent(Object source) {
        super(source);
        System.out.println("我是一个事件,目前在事件的构造器内");
    }
}

2:创建一个监听器。直接实现ApplicationListener接口,重写其中onApplicationEvent方法.

public class MyEventListener implements ApplicationListener<MyEvent> {
    @Override
    public void onApplicationEvent(MyEvent event) {
        System.out.println("现在开始执行监听器中的内容,我是直接实现ApplicationListener接口的方式进行的");
        System.out.println("event.getSource() = " + event.getSource());
    }
}

3:将监听器手动添加进应用容器内,并进行发布事件。

@SpringBootApplication
public class EventTestApplication {
    public static void main(String[] args) {
//        SpringApplication.run(EventTestApplication.class, args);
        //第一种:自己手动将监听器添加到application中
        SpringApplication application = new SpringApplication(EventTestApplication.class);
        //添加监听器
        application.addListeners(new MyEventListener());
        ConfigurableApplicationContext context = application.run(args);
        //进行发布事件
        context.publishEvent(new MyEvent("Event数据源"));
        context.close();
    }
}

4:启动主启动类,进行打印测试。

第二种

1:同第一种的1

2:创建一个监听器。


@Component
public class MyEventListener2 implements ApplicationListener<MyEvent> {
    @Override
    public void onApplicationEvent(MyEvent event) {
        System.out.println("现在开始执行监听器中的内容,我是打Compoent注解的方式进行的");
        System.out.println("event.getSource() = " + event.getSource());
    }
}

3:发布事件,后续进行启动类测试即可。

@SpringBootApplication
public class EventTestApplication {
    public static void main(String[] args) {
        ConfigurableApplicationContext context = SpringApplication.run(EventTestApplication.class, args);
        //发布事件
        context.publishEvent(new MyEvent("source"));
        context.close();
    }
}

第三种

全部采用注解的方式

1:同第一种的1

2:创建一个监听器。


@Component
public class MyEventListener3 {
    @Async//异步注解。开启一个新线程。 去掉此注解则会变成同步监听。
    @EventListener(classes = MyEvent.class)
    public void TestListener(MyEvent myEvent){
        System.out.println("我是@EventListener注解的方式实现的监听器");
        System.out.println("myEvent.getSource() = " + myEvent.getSource());
    }
}

3:发布事件,后续进行启动类测试即可。

@SpringBootApplication
public class EventTestApplication {
    public static void main(String[] args) {
        ConfigurableApplicationContext context = SpringApplication.run(EventTestApplication.class, args);
        //发布事件
        context.publishEvent(new MyEvent("source"));
        context.close();
    }
}

以上就是三种创建的方式。

下面是代码的结构图:

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: springboot如何开启一个监听线程执行任务

本文链接: https://lsjlt.com/news/197817.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • springboot如何开启一个监听线程执行任务
    目录springboot开启一个监听线程执行任务springboot中监听事件的创建流程事件的大体步骤第一种第二种第三种总结springboot开启一个监听线程执行任务 public...
    99+
    2023-02-28
    springboot监听 监听线程执行任务 springboot线程监听
  • springboot怎么开启一个监听线程执行任务
    这篇文章主要介绍“springboot怎么开启一个监听线程执行任务”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“springboot怎么开启一个监听线程执行任务”文章能帮助大家解决问题。spring...
    99+
    2023-07-05
  • 【JavaSE专栏83】线程插队,一个线程在另一个线程执行特定任务之前先执行
    作者主页:Designer 小郑 作者简介:3年JAVA全栈开发经验,专注JAVA技术、系统定制、远程指导,致力于企业数字化转型,CSDN学院、蓝桥云课认证讲师。 主打方向:Vue、SpringB...
    99+
    2023-09-05
    java 后端 开发语言 线程插队 线程 多线程 jvm 原力计划
  • springBoot @Scheduled如何实现多个任务同时开始执行
    springBoot @Scheduled如何实现多个任务同时开始执行,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。@Scheduled多个任务同时开始执行只需在...
    99+
    2023-06-22
  • C#如何通过任务开启线程
    这篇文章将为大家详细讲解有关C#如何通过任务开启线程,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。通过任务开启线程1>Task开启线程using System;using Sys...
    99+
    2023-06-17
  • springBoot @Scheduled实现多个任务同时开始执行
    目录@Scheduled多个任务同时开始执行只需在springBoot启动类上添加@Scheduled多定时任务,重叠执行@Scheduled如果有两个定时任务如果想要多个定时任务重...
    99+
    2024-04-02
  • 如何在Java项目中利用线程池执行多个任务
    如何在Java项目中利用线程池执行多个任务?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Java可以用来干什么Java主要应用于:1. web开发;2. And...
    99+
    2023-06-06
  • 如何使用Python中的多线程进行任务并发执行
    如何使用Python中的多线程进行任务并发执行多线程是一种常用的并发编程技术,可以提高程序的执行效率。在Python中,使用多线程可以实现任务的并发执行,从而加快程序的运行速度。本文将介绍如何使用Python中的多线程进行任务的并发执行,并...
    99+
    2023-10-22
    并发执行 Python多线程
  • Java中如何判断线程池任务已执行完成
    目录不判断的问题方法1:isTerminated缺点分析扩展:线程池的所有状态方法2:getCompletedTaskCount方法说明优缺点分析方法3:CountDownLatch...
    99+
    2024-04-02
  • redis如何开启和执行事务
    redis开启和执行事务的示例:在redis可以用exec命令来执行事务块内所有的命令,如果命令被中断,返回false,使用redis事务,事务正常执行的,具体代码如下:输出结果:array (size=2)0 => boolean tru...
    99+
    2024-04-02
  • 利用servlet如何实现一个监听在线人数功能
    这篇文章将为大家详细讲解有关利用servlet如何实现一个监听在线人数功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。具体内容如下ServletContext事件监听器---->针对...
    99+
    2023-05-31
    servlet 监听
  • Linux如何定时执行任务教程
    目录1 教程1.1 安装crontabs1.2 查看crontab服务的状态:1.3 查看crontab的日志信息1.4 配置定时任务(1)修改定时任务:(2)查看定时任务1.5 crontab命令详解1.5.1 命令格...
    99+
    2023-04-23
    Linux定时任务教程 Linux定时任务 Linux任务
  • Vue如何监听数据渲染DOM完以后执行某个函数
    小编给大家分享一下Vue如何监听数据渲染DOM完以后执行某个函数,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!实例如下:&nbs...
    99+
    2024-04-02
  • win10如何开启任务管理器命令行
    这篇文章主要为大家展示了“win10如何开启任务管理器命令行”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“win10如何开启任务管理器命令行”这篇文章吧。登录win10系统桌面,在桌面的任务栏上...
    99+
    2023-06-28
  • 如何使用PHP多线程执行多个方法
    在PHP开发中,经常会遇到需要同时执行多个操作的情况。想要在一个进程中同时执行多个耗时操作,就需要使用PHP的多线程技术来实现。本文将介绍如何使用PHP多线程执行多个方法,提高程序的并发性能。一、PHP多线程概述传统的PHP是单线程的语言,...
    99+
    2023-05-14
    多线程 php
  • 如何在阿里云服务器中执行任务一个详细的指南
    阿里云服务器是一款强大的云计算服务,它提供了一种高效的方式,让您可以在云服务器上执行任务。无论您是个人用户还是企业用户,阿里云服务器都能满足您的需求。然而,对于新手来说,如何在阿里云服务器中执行任务可能是一个挑战。本文将为您提供一个详细的指...
    99+
    2023-10-29
    阿里 器中 指南
  • java多线程执行一半不动如何解决
    如果Java多线程执行一半后不动,可能存在以下几种情况和解决办法:1. 死锁:可能存在多个线程相互等待对方释放资源的情况,导致所有线...
    99+
    2023-08-24
    java
  • 如何创建并运行一个java线程
    这篇文章给大家分享的是有关如何创建并运行一个java线程的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。什么是进程呢?    进程是指运行中的应用程序,每个进程都有自己独立的地址空间(...
    99+
    2023-05-30
    java
  • php如何停止重启,取消正在执行的任务调度
    前言:最近出现一个问题,同事误操作,开启了一个任务,找到我问能不能停止,我也是火急火燎查询方法帮忙解决,我觉得有必要做个记录,希望帮到有需要的人 之前我写过Laravel和thinkphp的定时...
    99+
    2023-09-13
    php 开发语言
  • 如何暂停一个正在运行的线程
    要暂停一个正在运行的线程,可以使用Thread类的`suspend()`方法将线程挂起,然后使用`resume()`方法恢复线程的执...
    99+
    2023-09-28
    线程
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作