Java线程使用';返回';在逃
我想使用“return;”如果条件为真,则完成线程的执行。会发生什么坏事 这只是一个更好理解的例子。在我的代码中有几十个检查这个条件,对我来说看起来非常无序(如果在其他if…) 我仍然想执行最后一个块Java线程使用';返回';在逃,java,java-threads,Java,Java Threads,我想使用“return;”如果条件为真,则完成线程的执行。会发生什么坏事 这只是一个更好理解的例子。在我的代码中有几十个检查这个条件,对我来说看起来非常无序(如果在其他if…) 我仍然想执行最后一个块 public class Method implements Runnable{ @Override public void run() { try { if(condition) { return; } System.out.println("b"
public class Method implements Runnable{
@Override
public void run() {
try {
if(condition) { return; }
System.out.println("b");
}finally {
System.out.println("a");
}
}
或者,如果不是这样,情况会更好吗
public class Method implements Runnable{
@Override
public void run() {
try {
if(!condition) {
System.out.prinln("b");
}else{ //nothing }
}finally {
System.out.println("a");
}
}
会发生什么坏事
如果您返回,则不会发生任何不好的情况代码>在run()方法中
run()
方法的两个版本在功能上是等效的;i、 他们做同样的事情
在这两种情况下,finally
类将始终执行1。就像这不是run()
方法一样
两个版本之间唯一的区别是风格。使用您认为在实际代码中可读性最好的版本。(我认为没有人能根据这个高度人为的例子给你提供建议。)
1-。。。除非有人/物杀死JVM进程,拔出电源插头,等等
会发生什么坏事
如果您返回,则不会发生任何不好的情况代码>在run()方法中
run()
方法的两个版本在功能上是等效的;i、 他们做同样的事情
在这两种情况下,finally
类将始终执行1。就像这不是run()
方法一样
两个版本之间唯一的区别是风格。使用您认为在实际代码中可读性最好的版本。(我认为没有人能根据这个高度人为的例子给你提供建议。)
1-。。。除非有人/物杀死JVM进程,拔出电源插头,等等。这里真正的答案是:如果你担心可读性,那么你的问题不是返回,而不是其他
那么你的问题就在这里:
在我的代码中,有很多人在检查这种情况
这很可能意味着你的线程正在做很多事情。导致代码杂乱无章,无法阅读
当然,乍一看,这意味着你肯定想要
if (whatever) {
return;
}
if (somethingElse) {
return;
}
而不是使用if/else if/else添加缩进层
但正如所说的:这里的真正答案是后退一步,了解完整的情况,并找到以最易读的方式解决“大问题”的方法。最有可能的是,你目前的方法无法实现这一目标。甚至不接近。相反,您应该研究用许多较小的方法(有好的名称)来分割代码,并以有意义的方式组织这些方法。这里真正的答案是:如果您担心可读性,那么您的问题不是返回,而不是其他
那么你的问题就在这里:
在我的代码中,有很多人在检查这种情况
这很可能意味着你的线程正在做很多事情。导致代码杂乱无章,无法阅读
当然,乍一看,这意味着你肯定想要
if (whatever) {
return;
}
if (somethingElse) {
return;
}
而不是使用if/else if/else添加缩进层
但正如所说的:这里的真正答案是后退一步,了解完整的情况,并找到以最易读的方式解决“大问题”的方法。最有可能的是,你目前的方法无法实现这一目标。甚至不接近。相反,你应该考虑用许多较小的方法(有好的名称)来分割代码,并以有意义的方式组织这些方法。无论哪种情况,线程都会结束,而try
块的契约最终总是会执行,所以你通常不必担心这种情况不会发生。在不了解你的用例的情况下,没有什么会反对你的第一种方法。非常好,finally
在大多数(~all)情况下也会被调用。无论哪种情况,线程都会结束,try
块的契约总是会执行,finally
所以您通常不必担心这种情况不会发生。在不知道您的用例的情况下,没有什么可以反对你的第一种方法。非常好,而且在大多数(~all)情况下,最终也会被调用。