簡體   English   中英

覆蓋偵聽器和線程

[英]Overriding listeners and threads

它是一個好主意,倍率(執行),監聽或線程的行為在當前代碼或創建一個新的類,實現或擴展呢?

例如

public doSomething() {
    Thread thr = new Thread(){
        public void run() {
            //thread business
        }
    };
    thr.start();
}

public class MyThread extends Thread {
    public void run() {
        //thread business
    }
}
......
public doSomething() {
    MyThread thr = new MyThread();
    thr.start();
}

請指出這兩種做法的利弊。

第一種方法永遠不是一個好主意。 當我們這樣做時,您實際上創建了一個內部類。 並且由於內部類具有保存父類對象的隱式屬性,因此可能導致內存泄漏。

由於上述原因,在自己的文件中創建新類的第二個選項總是更好。

編輯2:

第一種方法永遠不是一個好主意。 當我們這樣做時,您實際上創建了一個內部類。 並且由於內部類具有保存父類對象的隱式屬性,因此可能導致內存泄漏。

由於上述原因,在自己的文件中創建新類的第二個選項總是更好。

編輯2:

public class MyThread extends Thread {

    private WeakReference<Button> mButton;

    public MyThread(Button button) {
        mButton = new WeakReference(button);
        // Use this button where-ever you want
    }

    public void run() {
        //thread business
    }
}
......
Button btn = ...;
public doSomething() {
    MyThread thr = new MyThread(btn);
    thr.start();
}

暫無
暫無

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

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