首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
写return的区别
航程序员
2017-09-29 19:06
我问下我controller最后返回的时候renderjson(obj) 这个后面跟不跟return什么区别 我项目出现了线程满了的情况了我看和这个有关没
项目:
JFinal
评论区
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所做的贡献!
回复
发送
我要反馈
热门反馈
扫码入社
public void action() {
if(...) {
renderJson(...);
return;
}
render(....);
}
上面的代码,如果没有 return 的话,后面的 render(...) 会被执行,而这个 render 是不需要被执行的
线程满与这个 return 没有关系