一個(gè)簡(jiǎn)單的異步回調(diào)java實(shí)現(xiàn)

從剛接觸jquery時(shí)感受到了回調(diào)這種寫(xiě)法,之后學(xué)習(xí)android的時(shí)候,發(fā)現(xiàn)也提供了很多回調(diào)方法.于是一直自己想寫(xiě)一寫(xiě) 回調(diào).最近在學(xué)習(xí)netty.于是開(kāi)始實(shí)現(xiàn)了一下.
代碼:

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()+" 做完了之后要這樣做,請(qǐng)注意看看");
//            }
//        });
        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()+" 做完了之后要這樣做,請(qǐng)注意看看");
            }

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,030評(píng)論 25 709
  • “我必須是你近旁的一株木棉,作為樹(shù)的形象和你站在一起。根,緊握在地下,葉,相觸在云里;每一陣風(fēng)過(guò),我們都互相致意。...
    葉相觸云里閱讀 583評(píng)論 0 2
  • 在過(guò)去的一年里,經(jīng)常有人問(wèn)我—— “你堅(jiān)持和努力的意義究竟在哪呢?” 我說(shuō):“我在恐懼。恐懼我變成我最討厭的那類(lèi)中...
    簡(jiǎn)淺Jian閱讀 560評(píng)論 0 4
  • 書(shū)是半個(gè)月前從H那里借來(lái)的,本想在旅行途中用來(lái)消磨時(shí)間。 旅行依舊,書(shū)卻擱淺了。 北京回來(lái)后正式加入清單,今天看得...
    布丁伊利利閱讀 1,436評(píng)論 0 0

友情鏈接更多精彩內(nèi)容