Java 线程在 运行() 中使用 'return;'
Java Thread use 'return;' in run()
我想使用 'return;' 在条件为真时结束线程的执行。会发生什么坏事?
这只是为了更好理解的示例。在我的代码中有几十个检查这个条件并且对我来说看起来非常无序(如果在其他情况下......)。
我还是想执行finally块
public class Method implements Runnable{
@Override
public void run() {
try {
if(condition) { return; }
System.out.println("b");
}finally {
System.out.println("a");
}
}
或者 if-else 更好?
public class Method implements Runnable{
@Override
public void run() {
try {
if(!condition) {
System.out.prinln("b");
}else{ //nothing }
}finally {
System.out.println("a");
}
}
What bad can happen?
如果您在 run()
方法中 return;
就不会发生任何问题。
您的 run()
方法的两个版本在功能上是等效的;即他们做同样的事情。
并且 finally
class 将始终在这两种情况下执行 1。就像这不是 run()
方法一样。
两个版本之间的唯一区别是风格。使用您认为最易读的版本在您的真实代码中。 (我认为没有人可以根据这个高度人为的例子给你建议。)
1 - ...除非有人/某事杀死了 JVM 进程,拔掉了电源插头,等等。
真正的答案是:如果您担心 可读性,那么您的问题不是 return 与 if-else.
那么你的问题就在这里:
In my code are dozens of checking this condition
这很可能意味着您的线程正在处理许多 事情。导致混乱,不可读的代码。
当然,乍一看,这意味着你肯定想要
if (whatever) {
return;
}
if (somethingElse) {
return;
}
而不是使用 if/else 添加缩进层 if/else ...
但如前所述:真正的答案是退后一步,全面了解并找到以最易读的方式解决 "big picture problem" 的方法。很可能,您当前的方法不会让您到达那里。差远了。相反,您应该考虑将代码分割成许多更小的方法(使用好名字),并以有意义的方式组织它们。
我想使用 'return;' 在条件为真时结束线程的执行。会发生什么坏事?
这只是为了更好理解的示例。在我的代码中有几十个检查这个条件并且对我来说看起来非常无序(如果在其他情况下......)。
我还是想执行finally块
public class Method implements Runnable{
@Override
public void run() {
try {
if(condition) { return; }
System.out.println("b");
}finally {
System.out.println("a");
}
}
或者 if-else 更好?
public class Method implements Runnable{
@Override
public void run() {
try {
if(!condition) {
System.out.prinln("b");
}else{ //nothing }
}finally {
System.out.println("a");
}
}
What bad can happen?
如果您在 run()
方法中 return;
就不会发生任何问题。
您的 run()
方法的两个版本在功能上是等效的;即他们做同样的事情。
并且 finally
class 将始终在这两种情况下执行 1。就像这不是 run()
方法一样。
两个版本之间的唯一区别是风格。使用您认为最易读的版本在您的真实代码中。 (我认为没有人可以根据这个高度人为的例子给你建议。)
1 - ...除非有人/某事杀死了 JVM 进程,拔掉了电源插头,等等。
真正的答案是:如果您担心 可读性,那么您的问题不是 return 与 if-else.
那么你的问题就在这里:
In my code are dozens of checking this condition
这很可能意味着您的线程正在处理许多 事情。导致混乱,不可读的代码。
当然,乍一看,这意味着你肯定想要
if (whatever) {
return;
}
if (somethingElse) {
return;
}
而不是使用 if/else 添加缩进层 if/else ...
但如前所述:真正的答案是退后一步,全面了解并找到以最易读的方式解决 "big picture problem" 的方法。很可能,您当前的方法不会让您到达那里。差远了。相反,您应该考虑将代码分割成许多更小的方法(使用好名字),并以有意义的方式组织它们。