码迷,mamicode.com
首页 > 编程语言 > 详细

spring5 webflux测试

时间:2018-03-05 11:25:04      阅读:323      评论:0      收藏:0      [点我收藏+]

标签:sys   submit   url   fun   iter   outer   print   obj   stack   

 

ServerResponse方式

@Configuration
public class RouterFunctionConfiguration {

    @Bean
//    @Autowired
    public RouterFunction<ServerResponse> personFindAll(UserRepository userRepository){


        return RouterFunctions.route(RequestPredicates.GET("/person/find/all"),
                request ->{
                    Collection<User> users = userRepository.findAll();

                    Flux<User> userFlux = Flux.fromIterable(users);
                    return ServerResponse.ok().body(userFlux,User.class);
                });
    }
}

测试


@Test
public void threadTestOrderBy() throws InterruptedException {

final Long id=141284830240768L;
int threadCount=100000;
final CountDownLatch begin = new CountDownLatch(1);
final CountDownLatch end = new CountDownLatch(threadCount);
final int[] result={0,0};
final Object lock = new Object();
ExecutorService executorService = Executors.newFixedThreadPool(100);
Long time1=System.currentTimeMillis();
for (int i = 0; i < threadCount; i++) {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
begin.await();
HttpParamsVo httpParamsVo = new HttpParamsVo(new HttpSecretVo(appKey,appSecret),params);
String resultS = HttpClientSecretSendUtil.get(url, httpParamsVo);
synchronized(lock){
result[0]++;
}
} catch (Exception ex) {
synchronized(lock) {
result[1]++;
}
ex.printStackTrace();
}finally{
end.countDown();
}
}
});
executorService.submit(thread);
}
System.out.println(threadCount+"个线程开始");
begin.countDown();
end.await();
Long time2=System.currentTimeMillis();
System.out.println("耗时: "+(time2-time1)/1000+"秒");
System.out.println(threadCount+"个线程更新结束");
System.out.println("成功"+result[0]+",失败"+result[1]);
}

耗时

技术分享图片

 

 

 

servlet方式

@GetMapping("/person/find/all")
    @ResponseBody
    public Collection<User> findAll(){
        return this.userRepository.findAll();
    }

测试同上

结果

技术分享图片

 

 

总结100W个线程的情况下

spring 5提供的 webFlux 相比 servlet模型 慢了17秒

 

spring5 webflux测试

标签:sys   submit   url   fun   iter   outer   print   obj   stack   

原文地址:https://www.cnblogs.com/zfzf1/p/8507360.html

(1)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!