Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Runnable类之外的Runnable中声明使用的函数能否产生更高的性能?_Java_Performance - Fatal编程技术网

Java 在Runnable类之外的Runnable中声明使用的函数能否产生更高的性能?

Java 在Runnable类之外的Runnable中声明使用的函数能否产生更高的性能?,java,performance,Java,Performance,我有一段代码需要在单独的线程上运行以提高性能。 Runnable要使用的所有方法都在Runnable类之外的示例: public class MyClass{ public void myMethod() { new Runnable(){ @Override public void run() { task1(); task2();

我有一段代码需要在单独的线程上运行以提高性能。 Runnable要使用的所有方法都在Runnable类之外的示例:

public class MyClass{
    public void myMethod() {
        new Runnable(){
            @Override
            public void run() {
               task1();
               task2();
               task3();
            }
        }
    }

    public void task1(){

    }

    public void task2(){

    }

    public void task3(){

    }
}
public class MyClass{
    public void myMethod() {
        new Runnable(){
            @Override
            public void run() {
               task1();
               task2();
               task3();
            }

            public void task1(){

            }

            public void task2(){

            }

            public void task3(){

            }
        }
    }
}
Runnable要使用的所有方法都在Runnable类内的示例:

public class MyClass{
    public void myMethod() {
        new Runnable(){
            @Override
            public void run() {
               task1();
               task2();
               task3();
            }
        }
    }

    public void task1(){

    }

    public void task2(){

    }

    public void task3(){

    }
}
public class MyClass{
    public void myMethod() {
        new Runnable(){
            @Override
            public void run() {
               task1();
               task2();
               task3();
            }

            public void task1(){

            }

            public void task2(){

            }

            public void task3(){

            }
        }
    }
}

我所处的情况是,性能的任何微小改进都会带来显著的改进。

不,java会在调用任务的代码部分复制
任务的代码。不要猜测,使用基准测试。看看JavaJMH。@MutaiMwiti你很不可能从这样的微优化中得到任何好处。你需要关心这些方法中发生的事情。@LucaNicoletti你错了两倍。Java编译器什么都不做。JIT可以内联方法,但这不是您所描述的。@LucaNicoletti Java编译器是
javac
JIT
是一个不同的编译器。它们之间有很大的区别。不,java会复制
任务
中你调用它们的代码部分。不要猜测,使用基准测试。看看JavaJMH。@MutaiMwiti你很不可能从这样的微优化中得到任何好处。你需要关心这些方法中发生的事情。@LucaNicoletti你错了两倍。Java编译器什么都不做。JIT可以内联方法,但这不是您所描述的。@LucaNicoletti Java编译器是
javac
JIT
是一个不同的编译器。他们之间有很大的区别。