栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java多线程中的回调运用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java多线程中的回调运用

本教程操作环境:windows7系统、java10版,DELL G3电脑。

1.回调方式

(1)class A实现接口CallBack callback——背景1

(2)class A中包含一个class B的引用b ——背景2

(3)class B有一个参数为callback的方法f(CallBack callback) ——背景3

(4)A的对象a调用B的方法 f(CallBack callback) ——A类调用B类的某个方法 C

(5)然后b就可以在f(CallBack callback)方法中调用A的方法 ——B类调用A类的某个方法D

2.多线程中的回调

Java多线程中可以通过callable和future或futuretask结合来获取线程执行后的返回值。实现方法是通过get方法来调用callable的call方法获取返回值。

其实这种方法本质上不是回调,回调要求的是任务完成以后被调用者主动回调调用者的接口。而这里是调用者主动使用get方法阻塞获取返回值。

public class 多线程中的回调 {
    //这里简单地使用future和callable实现了线程执行完后
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        ExecutorService executor = Executors.newCachedThreadPool();
        Future future = executor.submit(new Callable() {
            @Override
            public String call() throws Exception {
                System.out.println("call");
                TimeUnit.SECONDS.sleep(1);
                return "str";
            }
        });
        //手动阻塞调用get通过call方法获得返回值。
        System.out.println(future.get());
        //需要手动关闭,不然线程池的线程会继续执行。
        executor.shutdown();
 
    //使用futuretask同时作为线程执行单元和数据请求单元。
    FutureTask futureTask = new FutureTask(new Callable() {
        @Override
        public Integer call() throws Exception {
            System.out.println("dasds");
            return new Random().nextInt();
        }
    });
    new Thread(futureTask).start();
    //阻塞获取返回值
    System.out.println(futureTask.get());
}
@Test
public void test () {
    Callable callable = new Callable() {
        @Override
        public Object call() throws Exception {
            return null;
        }
    };
    FutureTask futureTask = new FutureTask(callable);
 
}
}

以上就是java多线程中的回调运用,可以发现通过两种不同方法的相互调用,要在返回值上的获取变得更加容易。虽然严格上来说不是回调,但是运用了相关的回调思想。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/15076.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号