方法内部类与类级内部类

时间:2017-04-26 09:31:33

标签: java concurrency jit

我写的是这样的:

class Root {
    public void action() {
        List<Foo> param1;
        List<Foo> param2;

        class Node implements Runnable {
            public void run() {
                // read param1, some stuff, insert in param2
            }
        }

        tpe ThreadPoolExecutor = new ThreadPoolExecutor(..);

        // And submit some work, a few times
        tpe.submit(new Node());
        tpe.submit(new Node());

        // some stuff with param1 & 2
    }
}

然后我想知道这没有性能问题。如果我在一个方法中声明内部类并使用局部变量这一事实不会影响性能,那么由于它周围的上下文,JIT编译器可能永远无法优化内部类的执行。 所以我写了类似这样的东西,它做了完全相同的事情:

class Root {
    class Node implements Runnable {

        List<Foo> param1;
        List<Foo> param2;

        public Node(List<Foo> param1, List<Foo> param2) {
            this.param1 = param1;
            this.param2 = param2;
        }

        public void run() {
            // read param1, some stuff, insert in param2
        }
    }

    public void action() {
        List<Foo> param1;
        List<Foo> param2;

        tpe ThreadPoolExecutor = new ThreadPoolExecutor(..);

        // And submit some work, a few times
        tpe.submit(new Node(param1, param2));
        tpe.submit(new Node(param1, param2));
    }
}

该应用程序负载很重,所以我想知道从性能点开始这样做的最佳方法。任何人都可以提供见解吗?

1 个答案:

答案 0 :(得分:0)

类声明在编译时发生,而不是在运行时发生。没有运行时性能差异。