首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring框架:多线程综例一

@Service

public class TestAsyncService {

public void serviceTest() {

// 这里执行实际的业务逻辑,在这里我们就是用一个简单的遍历来模拟

Arrays.stream(new int[]{1,2,3,4,5,6,7,8,9,10}).forEach(t -> {

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

e.printStackTrace();

}

});

}

}

@RestController

public class ThreadController1 {

@Autowired

private TestAsyncService service;

/**

* 使用传统方式测试

*/

@GetMapping("/t1")

public void test() {

service.serviceTest();

}

}

@RestController

public class ThreadController2 {

@Autowired

private TestAsyncService asyncService;

/**

* 使用传统方式测试

*/

@GetMapping("/t2")

public void test() {

/**

* 定义一个线程池

* 核心线程数(corePoolSize):1

* 最大线程数(maximumPoolSize): 1

* 保持连接时间(keepAliveTime):50000

* 时间单位 (TimeUnit):TimeUnit.MILLISECONDS(毫秒)

* 阻塞队列 new LinkedBlockingQueue()

*/

ThreadPoolExecutor executor = new ThreadPoolExecutor(1,5,50000, TimeUnit.MILLISECONDS, new LinkedBlockingQueue());

// 执行业务逻辑方法serviceTest()

executor.execute(new Runnable() {

@Override

public void run() {

asyncService.serviceTest();

}

});

}

}

@RestController

public class ThreadController3 {

@Autowired

private TestAsyncService asyncService;

* 使用@Async来实现

@GetMapping("/t3")

public void test() {

// 异步调用

asyncService.serviceTest();

}

}

  • 发表于:
  • 原文链接https://page.om.qq.com/page/O2Zf0Dl-kSDVlih6wABMUDFg0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券