写return的区别

我问下我controller最后返回的时候renderjson(obj) 这个后面跟不跟return什么区别  我项目出现了线程满了的情况了我看和这个有关没

评论区

JFinal

2017-09-29 20:40

return 只是控制程序流程,不让程序往下执行了而已,例如,某个 action 中有两个分支,分别使用不同的 render:
public void action() {
if(...) {
renderJson(...);
return;
}
render(....);
}

上面的代码,如果没有 return 的话,后面的 render(...) 会被执行,而这个 render 是不需要被执行的

线程满与这个 return 没有关系

航程序员

2017-09-29 22:52

@JFinal 线程池弄成静态全局的好还是局部变量把 我现在是局部的走一次这个接口就弄一个线程池

LongLee力

2017-09-30 12:39

我记得Play framework的render方法可以终结action方法,也就是render自带return效果,内部是使用异常机制做到的。

JFinal

2017-09-30 12:52

@LongLee力 play framework 在 render 方法中通过抛出异常来终止当前流程,这个显然是非常错误的做法:
1:异常的创建非常耗时间,而且还耗空间。异常机制的设计初衷是用于不正常的情形,很少有 JVM 实现试图对它们的性能做优化,所以创建、抛出异常开销是很昂贵的

2:将异常用于正常的流程控制,在逻辑上和原则上就是错误的,会引发一些不确定的副作用,这点在 java 最重要的经典书《effective java》 的第 8 章有详细的阐述

LongLee力

2017-09-30 13:18

@JFinal 学习了。看来JFinal不光是一款优秀的开发框架,还是一个知识宝库,值得深入学习。感谢波总对JFinal所做的贡献!

热门反馈

扫码入社