簡體   English   中英

方法內部類與類級別內部類

[英]In-method inner class vs class level inner class

我在寫這樣的東西:

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));
    }
}

該應用程序負載沉重,因此我想知道從性能角度來看最好的方法。 任何人都可以提供見解?

類聲明發生在編譯時,而不是在運行時。 沒有運行時性能差異。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM