最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解spring多線程與定時任務(wù)

 更新時間:2017年04月11日 10:14:37   作者:全力以赴001  
本篇文章主要介紹了spring多線程與定時任務(wù),詳細(xì)的介紹了spring多線程任務(wù)和spring定時任務(wù),有興趣的可以了解一下。

本篇主要描述一下spring的多線程的使用與定時任務(wù)的使用.

1.spring多線程任務(wù)的使用

spring通過任務(wù)執(zhí)行器TaskExecutor來實現(xiàn)多線程與并發(fā)編程。通常使用ThreadPoolTaskExecutor來實現(xiàn)一個基于線程池的TaskExecutor.

首先你要實現(xiàn)AsyncConfigurer 這個接口,目的是開啟一個線程池

代碼如下:

package com.foreveross.service.weixin.test.thread;

import java.util.concurrent.Executor;

import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.AsyncConfigurer;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;

/**
 * 注入一個線程池
 * @author mingge
 *
 */

@Configuration
@ComponentScan("com.foreveross.service.weixin.test.thread")
@EnableAsync
public class TaskExecutorConfig implements AsyncConfigurer {

  @Override
  public Executor getAsyncExecutor() {
    ThreadPoolTaskExecutor taskExecutor=new ThreadPoolTaskExecutor();
    taskExecutor.setCorePoolSize(5);
    taskExecutor.setMaxPoolSize(20);
    taskExecutor.setQueueCapacity(25);
    taskExecutor.initialize();
    return taskExecutor;
  }

  @Override
  public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
    return null;
  }

  
}

然后注入一個類,實現(xiàn)你的業(yè)務(wù),并在你的Bean的方法中使用@Async注解來聲明其是一個異步任務(wù)

代碼如下:

package com.foreveross.service.weixin.test.thread;

import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;

/**
 * 線程池任務(wù)
 * @author mingge
 *
 */
@Service
public class TaskService {

  @Async
  public void executeAsyncTask(int i){
    System.out.println("執(zhí)行異步任務(wù):"+i);
  }
  
  @Async
  public void executeAsyncTask1(int i){
    System.out.println("執(zhí)行異步任務(wù)1:"+(i+i));
  }
}

最后通過測試,可以看到你的實現(xiàn)是異步執(zhí)行了.

package com.foreveross.service.weixin.test.thread;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;


/**
 * 
 * @author mingge
 *
 */
public class Test {

  public static void main(String[] args) {
    AnnotationConfigApplicationContext context=new AnnotationConfigApplicationContext(TaskExecutorConfig.class);
    TaskService taskService=context.getBean(TaskService.class);
    for(int i=0;i<20;i++){
      taskService.executeAsyncTask(i);
      taskService.executeAsyncTask1(i);
    }
    //最后可以根據(jù)結(jié)果可以看出結(jié)果是并發(fā)執(zhí)行而不是順序執(zhí)行的呢
    context.close();
  }
}

2.spring定時任務(wù)的使用

在java原生態(tài)中,我們使用timer就可以了,這里小編說一些在Spring中的定時任務(wù)的使用

package com.foreveross.service.weixin.test.thread;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;

@Configuration
@ComponentScan("com.foreveross.service.weixin.test.thread")
@EnableScheduling//開啟對定時器的支持
public class TaskSchedulerConfig {

}
package com.foreveross.service.weixin.test.thread;

import java.util.Date;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;

@Service
public class TimerTaskJob {

  @Scheduled(fixedRate=2000)
  public void test(){
    System.out.println("我是定時任務(wù):"+new Date().getSeconds());
  }
}
package com.foreveross.service.weixin.test.thread;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class TestTimer {
  public static void main(String[] args) {
    AnnotationConfigApplicationContext context=new AnnotationConfigApplicationContext(TaskSchedulerConfig.class);
    
    //context.close();
  }
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java前端開發(fā)之HttpServletRequest的使用

    Java前端開發(fā)之HttpServletRequest的使用

    service方法中的request的類型是ServletRequest,而doGet/doPost方法的request的類型是HttpServletRequest,HttpServletRequest是ServletRequest的子接口,功能和方法更加強(qiáng)大
    2023-01-01
  • Java中try catch處理異常示例

    Java中try catch處理異常示例

    這篇文章主要給大家介紹了關(guān)于Java中try catch 的基本用法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • nacos-discovery包名層級問題解決

    nacos-discovery包名層級問題解決

    這篇文章主要為大家介紹了nacos-discovery包名層級問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • java教程之二個arraylist排序的示例分享

    java教程之二個arraylist排序的示例分享

    常常遇到數(shù)組排序的問題,下面提供二個java的arraylist排序示例,需要的朋友可以參考下
    2014-03-03
  • Java實現(xiàn)簡易學(xué)籍管理系統(tǒng)

    Java實現(xiàn)簡易學(xué)籍管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)簡易學(xué)籍管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • java實現(xiàn)1M圖片壓縮優(yōu)化到100kb實現(xiàn)示例

    java實現(xiàn)1M圖片壓縮優(yōu)化到100kb實現(xiàn)示例

    這篇文章主要為大家介紹了java實現(xiàn)1M圖片壓縮優(yōu)化到100kb示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • 如何用JAVA判斷當(dāng)前時間是否為節(jié)假日、周末、工作日及調(diào)休日(不報錯:IOException!)

    如何用JAVA判斷當(dāng)前時間是否為節(jié)假日、周末、工作日及調(diào)休日(不報錯:IOException!)

    最近公司有個業(yè)務(wù)需要判斷工作日,但是每年的節(jié)假日不一樣,下面這篇文章主要給大家介紹了關(guān)于如何用JAVA判斷當(dāng)前時間是否為節(jié)假日、周末、工作日及調(diào)休日的相關(guān)資料,且不報錯:IOException!,需要的朋友可以參考下
    2023-12-12
  • maven如何利用springboot的配置文件進(jìn)行多個環(huán)境的打包

    maven如何利用springboot的配置文件進(jìn)行多個環(huán)境的打包

    這篇文章主要介紹了maven如何利用springboot的配置文件進(jìn)行多個環(huán)境的打包,在Spring Boot中多環(huán)境配置文件名需要滿足application-{profiles.active}.properties的格式,其中{profiles.active}對應(yīng)你的環(huán)境標(biāo)識,本文給大家詳細(xì)講解,需要的朋友可以參考下
    2023-02-02
  • mybatis plus自動生成器解析(及遇到的坑)

    mybatis plus自動生成器解析(及遇到的坑)

    這篇文章主要介紹了mybatis-plus自動生成器及遇到的坑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java 中模仿源碼自定義ArrayList

    Java 中模仿源碼自定義ArrayList

    這篇文章主要介紹了Java 中模仿源碼自定義ArrayList的相關(guān)資料,需要的朋友可以參考下
    2017-03-03

最新評論

新昌县| 永登县| 武乡县| 高唐县| 江北区| 姜堰市| 蓝田县| 孝感市| 安泽县| 台南县| 绵阳市| 固安县| 仙居县| 子长县| 兴义市| 汤阴县| 江达县| 邵武市| 星座| 中超| 关岭| 谢通门县| 青浦区| 宁蒗| 黔东| 安平县| 金溪县| 南丰县| 桃江县| 依兰县| 东至县| 沿河| 那曲县| 栾川县| 隆子县| 四子王旗| 城固县| 青州市| 长治县| 长乐市| 仁化县|