一個簡單的異步回調java實現

從剛接觸jquery時感受到了回調這種寫法,之后學習android的時候,發現也提供了很多回調方法.于是一直自己想寫一寫 回調.最近在學習netty.于是開始實現了一下.
代碼:

public class Task2 implements Runnable {
    private Callbacka callbacka;

    public Task2(Callbacka callbacka) {
        this.callbacka = callbacka;
    }

    @Override
    public void run() {
        try {
            callbacka.func();

            callbacka.onSuccess();
        }catch (Exception e){
            callbacka.onFailure(e);
        }

    }
}

public interface Callbacka {
    public void func();
    public void onSuccess();
    public void onFailure(Exception e);
}
public class Testtt {
    public static void main(String[] args){
        MyThreadPool myThreadPool=new MyThreadPool();
//        Task task1=new Task(new Callbacka() {
//            @Override
//            public void func() {
//                System.out.println(Thread.currentThread().getName()+"  假裝在做些什么");
//                try {
//                    Thread.sleep(3000);
//                } catch (InterruptedException e) {
//                    e.printStackTrace();
//                }
//                System.out.println(Thread.currentThread().getName()+" 做完了");
//            }
//            @Override
//            public void onSuccess() {
//                System.out.println(Thread.currentThread().getName()+" 做完了之后要這樣做,請注意看看");
//            }
//        });
        Task2 task1=new Task2(new Callbacka() {
            @Override
            public void func() {
                System.out.println(Thread.currentThread().getName()+"  假裝在做些什么");
                try {
                    Thread.sleep(3000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(Thread.currentThread().getName()+" 做完了");
            }

            @Override
            public void onSuccess() {
                System.out.println(Thread.currentThread().getName()+" 做完了之后要這樣做,請注意看看");
            }

            @Override
            public void onFailure(Exception e) {
                System.out.println(Thread.currentThread().getName()+" 出現了異常");
            }
        });
        ExecutorService executorService= Executors.newCachedThreadPool();
        executorService.submit(task1);
        System.out.println(Thread.currentThread().getName()+" 我在主線程啊!沒被阻塞啊");
        System.out.println(Thread.currentThread().getName()+" 主線程在做寫工作");
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(Thread.currentThread().getName()+" 主線程做完了");
    }
}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容