文档章节

Spring boot 守护线程

Geeyu
 Geeyu
发布于 2017/06/12 16:18
字数 237
阅读 608
收藏 1

由于项目需要,在系统启动之后,要新起一条线程一直跑,用作监听器,使用回调方法处理将要发生的事情,处理时,需要用到 JPA 的接口。

因此,需要设置一条守护线程,并且可以自动装配 Spring Bean,采用第三个方法。

方案一

@SpringBootApplication
public class App {

	//发射App
	public static void main(String[] args) {

		Thread thread = new Thread();
		thread.setDaemon(true);
		thread.start();

		SpringApplication app = new SpringApplication(App.class);
		app.run(args);
	}

}

方案二

@Bean
class EventSubscriber implements DisposableBean, Runnable {

    private Thread thread;
    private volatile boolean someCondition;

    EventSubscriber(){
        this.thread = new Thread(this);
    }

    @Override
    public void run(){
        while(someCondition){
            doStuff();
        }
    }

    @Override
    public void destroy(){
        someCondition = false;
    }

}

方案三


@Component
public class Listener implements ApplicationListener<ContextRefreshedEvent>, Runnable {

    @Autowired
    IUserRepo userRepo;//使用Spring data jpa,接口,没办法实现,只能让Spring自动装配

    @Override
    public void onApplicationEvent(ContextRefreshedEvent event) {
        Listener listener = event.getApplicationContext().getBean(Listener.class);
        new Thread(this).start();
    }

    @Override
    public void run() {
        System.out.println("run run run...");
    }
}

@SpringBootApplication
public class App {

	//发射App
	public static void main(String[] args) {
		SpringApplication app = new SpringApplication(App.class);
		app.setListeners(new Listener());
		app.run(args);
	}

}

方案四

ApplicationRunner 

 

© 著作权归作者所有

Geeyu
粉丝 3
博文 57
码字总数 30351
作品 0
昌平
私信 提问
spring-boot-plus 1.1.0 发布,集成 Spring Boot Admin 管理和监控应用

spring-boot-plus1.1.0.发布 集成Spring Boot Admin管理和监控应用 Spring Boot Admin用来管理和监控Spring Boot应用程序 应用程序向我们的Spring Boot Admin Client注册(通过HTTP)或使用S...

geekidea
08/01
4.2K
9
spring-boot-klock-starter 分布式锁 v1.2 版本发布

本次发版修复优化问题如下,有使用的建议更新 1.线程安全问题:在本地多线程,指定业务key的情况下,导致的线程安全问题 2.优化获取锁实例的方式 spring-boot-klock-starter 基于redis的分布...

KL博客
2018/08/29
1K
10
扼住高并发、高性能的咽喉---Spring Boot并发进阶

原文链接:https://www.e4developer.com/2018/03/30/introduction-to-concurrency-in-spring-boot/ 作者: Bartosz Jedrzejewski 译者: helloworldtang 概览 在使用Spring Boot构建服务时,......

生活点亮技术
2018/09/13
0
0
Spring Boot教程--Actuator监控介绍

注意:本文介绍基于boot: 1.x 版本。2.x对应会有所变化。 微服务的特点决定了功能模块的部署是分布式的,大部分功能模块都是运行在不同的机器上,彼此通过服务调用进行交互,前后台的业务流会...

spinachgit
03/06
67
0
SpringCloud学习2-Springboot监控模块(actuator)

前言 学习一项新技术最大的困难是什么? 是资料。让人高兴的是找到了一本系统学习Spring Cloud的教程,《Spring Cloud微服务实战》, 接下来的学习目标将以此书顺序演进。 虽然Springboot 2....

ryan-miao
2018/03/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
6
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
6
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
6
0
【技术分享】TestFlight测试的流程文档

上架基本需求资料 1、苹果开发者账号(如还没账号先申请-苹果开发者账号申请教程) 2、开发好的APP 通过本篇教程,可以学习到ios证书申请和打包ipa上传到appstoreconnect.apple.com进行TestF...

qtb999
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部