springboot多线程使用

package com.green.testlocalhost.controller;

import com.green.testlocalhost.vo.ResultData;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import java.util.concurrent.CompletableFuture;

/**
 * @Author zdj
 * @Date 2022/10/28 17:11
 * @Version 1.0
 */
@Api(tags = "数据处理")
@RestController
@RequestMapping("/dataDetal")
public class DataController {
    
    

    /**
     *  spring自带的线程池对象
     **/
    @Autowired
    private ThreadPoolTaskExecutor applicationTaskExecutor;

    /**
     * 多线程处理1000万条数据
     * 开启两个线程处理这1000万条数据
     * @return
     */
    @RequestMapping(value = "/detalData", method = RequestMethod.GET)
    @ApiOperation(value = "多线程处理1000万条数据", notes = "多线程处理1000万条数据", httpMethod = "GET")
    public ResultData detalData(){
    
    
        CompletableFuture<Void> completableFuture1 = CompletableFuture.runAsync(() -> {
    
    
            for (int i = 0; i < 100000; i++) {
    
    
                System.out.println("a-" + i);
            }
        }, applicationTaskExecutor);

        CompletableFuture<Void> completableFuture2 = CompletableFuture.runAsync(() -> {
    
    
            for (int i = 0; i < 100000; i++) {
    
    
                System.out.println("w-" + i);
            }
        }, applicationTaskExecutor);

        // 等待这两个线程都执行完
        CompletableFuture.allOf(completableFuture1, completableFuture2).get();
        return ResultData.ok("处理完成!", null);
    }
}

猜你喜欢

转载自blog.csdn.net/gelinwangzi_juge/article/details/128533670
今日推荐