>>分享Java编程技术,对《Java面向对象编程》等书籍提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 22136 个阅读者 刷新本主题
 * 贴子主题:  java常见的几种调用机制:同步调用,异步调用,回调 回复文章 点赞(0)  收藏  
作者:flybird    发表时间:2020-02-06 18:07:03     消息  查看  搜索  好友  邮件  复制  引用

                                                                              
        1、同步调用

         同步调用是最基本的调用方式,对象b中的方法直接调用对象a的方法,这个时候程序会等待对象a的方法执行完返回结果之后才会继续往下走。

         代码如下:
public class A {

  public void methodA(){

    System.out.println("this is class A method");

  }

}

public class B {

  public void methodB()

  {

    A a = new A();

    a.methodA();

    System.out.println("this is class B method");

  }

}

public class Test {

   public static void main(String[] args) {

      B b = new B();

      b.methodB();

   }

}

         结果:

         this is class A method

         this is class B method

         2、异步调用

         对象b中的方法调用对象a的方法,程序并不需要等待对象a的方法返回结果值,直接继续往下走。

         代码如下:


public class A extends Thread{

  @Override

  public void run() {

     try {

        Thread.sleep(3000);

      } catch (InterruptedException e) {

          e.printStackTrace();

      }

      System.out.println("this is class A method");

   }

}

public class B {

   public void methodB()
   {
  
      A a = new A();

     a.start();

     System.out.println("this is class B method");

   }

}

public class Test {

    public static void main(String[] args) {

        B b = new B();

        b.methodB();

   }

}

         结果:

         this is class B method

         this is class A method

         说明:异步调用我们通常采用多线程的方法来达到目的

         3、回调

         对象a的方法methodA()中调用对象b的methodB()方法,在对象b的methodB()方法中反过来调用对象a的callBack()方法,这个callBack()方法称为回调函数,这种调用方法称为回调。

         代码如下:


public class A {

   public void methodA()
   {

      B b = new B();

      b.methodB(new A());

      System.out.println("this is class A method : methodA");

   }

   public void callBack()
   {

      System.out.println("this is class A method : callBack");

   }

}

public class B {

  public void methodB(A a)
  {

     System.out.println("this is class B method : methodB");

    a.callBack();

  }

}

public class Test {

   public static void main(String[] args) {

       A a = new A();

      a.methodA();

   }

}

         运行结果:

         this is class B method : methodB

         this is class A method : callBack

         this is class A method : methodA

         注意:这里如果为了代码的扩展性更好,可以把类A与类B抽象出一个接口出来,然后用实现类去实现着两个接口,这样代码的扩展性会更好,也能满足更多的业务场景。

         回调的核心在于:回调方将本身对象传给调用方,调用方在本身代码逻辑执行完之后,调用回调方的回调方法。
                                    
                                                
----------------------------
原文链接:https://blog.csdn.net/zhenwei1994/article/details/79615861

程序猿的技术大观园:www.javathinker.net



[这个贴子最后由 flybird 在 2020-02-06 21:24:20 重新编辑]
  Java面向对象编程-->集合(上)
  JavaWeb开发-->使用Session(Ⅰ)
  JSP与Hibernate开发-->使用JPA和注解
  Java网络编程-->通过JDBC API访问数据库
  精通Spring-->Vue简介
  Vue3开发-->CSS过渡和动画
  [求助] 如何观看孙老师的课程视频
  Java函数式接口和Stream流
  从实战角度解读JVM:类加载机制+JVM调优实战+代码优化!
  Java Proxy用法: 让我们创建一个API代理器
  Java 语言中十大“坑爹”功能!
  Java是如何实现自己的SPI机制的?
  Java关键字final、static使用总结
  Java设计模式:迭代器模式
  Java设计模式:解释器模式
  java 支持分词的高性能拼音转换工具,速度是 pinyin4j 的两倍
  Java入门实用代码:获取所有线程
  Java入门实用代码:链表元素查找
  Java入门实用代码:遍历目录
  Java程序初始化顺序(一看就懂)
  Java Pattern和Matcher字符匹配详解
  更多...
 IPIP: 已设置保密
楼主      
该用户目前不在线 发货33 
  

威望: 0
级别: 侠客
魅力: 195
经验: 195
现金: 1152
发文章数: 19
注册时间: 0001-01-01
 消息  查看  搜索  好友  邮件  复制  引用


极速飞艇开奖直播
英国乐透8预测开奖
168
如驾驶战斗机模拟器等,此时的用户可感知虚拟环境的变化,进而也就能产生在相应现实世界中可能产生的各种感受。系统功能分为规划设计、展示娱乐、训练演练等几类。规划设计系统可用于新设施的实验验证,可大幅缩短研发时长,降低设计成本
发文章时间 2022-11-16 11:14:47
 IPIP: 已设置保密 1 楼     
该用户目前不在线 kericnnoe 
威望: 未知
级别: 未知
魅力: 未知
经验: 未知
现金: 未知
发文章数: 未知
注册时间: 未知
 复制  引用


要玩就要玩第一的DG真人
发文章时间 2022-12-06 01:51:27
 IPIP: 已设置保密 2 楼     
1页 2条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。