【发布时间】:2019-05-20 01:37:03
【问题描述】:
我正在用SpringBoot写一个控制器,我的控制器是这样的
@RequestMapping(value = "", method = RequestMethod.GET, produces = "application/json")
public MyDto getData throws Exception{
try{
Mydto=new MyDto();
dto.setFirstName(someImpl.getFirstName());
dto.setLastName(someOtherImpl.getLastName());
dto.setAddress1(someImpl.getAddress1());
dto.setAddress2(someOtherImpl.getAddress2());
return dto;
}catch(){...}
这里 someImpl 和 someOtherImpl 是接口,其中包含一些方法声明,我们从数据库中获取 getFirstName 和 getLastName,但是 getAddress1 和getAddress2 是硬编码值,我怎样才能让前两个 setter(名字和姓氏)在一个线程中运行,最后两个 setter(地址 1 和地址 2)在另一个线程中运行,这样我可以减少时间获取我的数据。
【问题讨论】:
-
使用多个线程不会加快速度。上下文切换的成本将远远超过进行一些方法调用的微不足道的成本(除非您在 setter 中做了大量工作)。
-
更重要的是,为什么你认为线程应该让它更快?
-
以此类推:如果您有 2 辆汽车在一条道路上行驶,那么修建另一条道路并不能帮助汽车更快地到达那里。一方面,您必须等到道路建成;然后你必须把车开到另一条路上;汽车仍然只能以相同的最高速度行驶;等
-
如果需要 10 秒,那么问题就完全不同了。究竟什么(!)需要10秒?它自己不能成为二传手。连接到数据库?外部服务?
-
@ValentinCarnu:这家伙在某处有 10 秒的延迟,没有线程可以帮助他
标签: java spring multithreading spring-boot spring-mvc