1. 程式人生 > >Java多執行緒內部類

Java多執行緒內部類

有時通過內部類來將執行緒程式碼隱藏在類中將會很有用

public class InnerThread1 {

    private int countDown = 5;
    private Inner inner;

    private class Inner extends Thread{
        public Inner(String name) {
            super(name);
            start();
        }

        @Override
        public void run() {
            try {
                while(true){
                    System.out.println(this);
                    if(--countDown==0)return;
                    sleep(10);  
                }
            } catch (Exception e) {
                // TODO: handle exception
            }

        }

        public String toString(){
            return getName() + ":" + countDown;
        }

        public void newMethod(){
            System.out.println("其它方法需要訪問的新方法!");
        }

    }

    public InnerThread1(String name){
        inner = new Inner(name);
        inner.newMethod();
    }

    public static void main(String[] args) {
        new InnerThread1("caogen");
    }

}

這裡寫圖片描述

InnerThread1建立了一個擴充套件Thread的匿名內部類,並且在構造器中建立了這個內部類的一個例項。如果內部類具有你在其它方法中需要訪問的新方法。其實我不知道這樣做有多大意義

public class InnerThread2 {

    private int countDown = 5;
    private Thread t;

    public InnerThread2(String name){
        t = new Thread(name){
            @Override
            public void run() {

                try {
                    while(true){
                        System.out.println(this);
                        if(--countDown==0)return;
                        sleep(10);
                    }
                } catch (Exception e) {
                    // TODO: handle exception
                }

            }

            public String toString(){
                return getName() + ": " + countDown;
            }

        };
        t.start();

    }

    public static void main(String[] args) {
        new InnerThread2("caogen");
    }

}

這裡寫圖片描述

InnerThread2展示了可替換的方式:在構造器中建立了一個匿名的Thread子類,並且將其向上轉型為Thread引用t。如果類中的其它方法需要訪問t,那它們可以通過Thread介面來實現。

這一章具體的實用性我不清楚在哪?求解答,謝謝!