java常见的几种调用机制(同步调用,异步调用,回调)
2018-03-19 19:52
627 查看
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抽象出一个接口出来,然后用实现类去实现着两个接口,这样代码的扩展性会更好,也能满足更多的业务场景。
回调的核心在于:回调方将本身对象传给调用方,调用方在本身代码逻辑执行完之后,调用回调方的回调方法。
同步调用是最基本的调用方式,对象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抽象出一个接口出来,然后用实现类去实现着两个接口,这样代码的扩展性会更好,也能满足更多的业务场景。
回调的核心在于:回调方将本身对象传给调用方,调用方在本身代码逻辑执行完之后,调用回调方的回调方法。
相关文章推荐
- java 三种调用机制(同步、回调、异步)
- Java 回调机制解析(同步回调/异步回调)
- java 回调机制分为:异步回调 同步回调
- 简单解析三种JAVA调用方式-同步,异步,回调
- java 回调机制分为:异步回调 同步回调
- 【java回调】同步/异步回调机制的原理和使用方法
- Java 的回调机制(同步与异步)
- java的同步调用、回调和异步调用。
- 【java回调】同步/异步回调机制的原理和使用方法
- Java回调机制(异步)
- 利用回调实现Java的异步调用
- Java 如何把异步调用模拟成同步调用
- 如何用Java回调和线程实现异步调用
- C#(同步调用、异步调用、异步回调)
- 同步调用、回调和异步调用的区别
- 2015/01/23 – 不要对异步回调函数进行同步调用
- “同步调用”、“异步调用”、“异步回调”
- java 异步机制与同步机制的区别
- 回调函数之同步调用、回调、异步调用
- 同步,异步,阻塞,非阻塞以及几种常见的服务器模型