>>分享Java编程技术,对《Java面向对象编程》等书籍提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 21886 个阅读者 刷新本主题
 * 贴子主题:  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开发-->JavaWeb应用入门(Ⅱ)
  JSP与Hibernate开发-->映射一对多关联关系
  Java网络编程-->Socket用法详解
  精通Spring-->CSS过渡和动画
  Vue3开发-->虚拟DOM和render()函数
  [分享]遊藝場開分員會很難嗎?原來工作項目是這些!
  实用类 EncodingDetect,查看一个文件的字符编码
  为网站代码块pre标签增加一个复制代码按钮代码
  BIO、NIO和AIO的区别、三种IO的原理与用法
  NIO模式的IO多路复用底层原理
  JDK自带JVM调优工具的用法
  最实用的10个重构小技巧排行榜,你都用过哪些?
  java中的Static、final、Static final各种用法
  Java读取大文件的高效率实现_java大文件
  Eclipse使用指南:快速修复功能
  Eclipse使用指南:Debug 配置
  Java入门实用代码:删除链表中的元素
  Java入门实用代码:字符串小写转大写
  java使用gzip实现文件解压缩示例
  初学者该学哪种编程语言
  更多...
 IPIP: 已设置保密
树形列表:   
[url=https://www.1687660.c... 发货33 2022-11-16 11:14:47
要玩就要玩第一的[url=https://dgbac... kericnnoe 2022-12-06 01:51:27
1页 2条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


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