美文网首页程序员
一个简单的异步回调java实现

一个简单的异步回调java实现

作者: bay1ts | 来源:发表于2016-08-08 14:44 被阅读179次

从刚接触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()+" 主线程做完了");
    }
}

相关文章

  • java中的回调

    在java中回调分为异步回调和同步回调

  • 一个简单的异步回调java实现

    从刚接触jquery时感受到了回调这种写法,之后学习android的时候,发现也提供了很多回调方法.于是一直自己想...

  • 使用guava实现异步回调的简单demo

    使用guava实现异步回调 guava介绍 guava是google针对java异步调用任务的加强框架,它与Jav...

  • 异步的实现

    异步的三种实现方式: 回调函数事件Promise 回调函数 回调函数不一定是异步 但是异步一定是回调函数。 事件 ...

  • JS 异步解决方案的发展历程以及优缺点

    异步编程的实现方式 回调函数 优点:简单、容易理解 缺点:回调地狱,不能用 try catch 捕获错误,不能 r...

  • RxJava1中线程调度分析

    Java开发过程中都会碰到异步任务,通常通过回调的方式来实现。但是业务一旦复杂,会使回调的书写很麻烦。(所谓回调地...

  • 07_Node.js Event

    一、回调函数 callback 1、回调函数 Node.js 异步编程的直接体现就是回调,异步编程依托于回调来实现...

  • nodeJS回调函数

    NodeJS异步编程的直接体现就是回调函数。 异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了。回调函...

  • Node.js 回调函数

    Node.js 异步编程的直接体现就是回调。 异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了。 回调...

  • Node.js - 回调函数

    Node.js 异步编程的直接体现就是回调。异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了。 回调函...

网友评论

    本文标题:一个简单的异步回调java实现

    本文链接:https://www.haomeiwen.com/subject/yxrrsttx.html