Java的三种调用机制(同步调用、异步调用和回调)_文思湧的博客-CSDN博客_java回调和直接调用的区别
1.
① 同步调用 :一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用
package com.test0;
class A {
public void methodA() {
System.out.println("this is class A method");
}
}
class B {
public void methodB() {
A a = new A();
a.methodA();
System.out.println("this is class B method");
}
}
public class t0 {
public static void main(String[] args) {
B b = new B();
b.methodB();
}
}
② 异步调用:对象B调用继承线程A类的对象方法,无须等待A类执行完即可执行下面的,常用于多线程
package com.test0;
class A extends Thread{
@Override
public void run() {
try {
Thread.sleep(1000);
}catch (InterruptedException e){
e.printStackTrace();
}
System.out.println("this is class A method");
}
}
class B {
public void methodB() {
A a = new A();
a.start();
System.out.println("this is class B method");
}
}
public class t0 {
public static void main(String[] args) {
B b = new B();
b.methodB(); // 虽然A先执行,但由于等待3s导致先输出了B,再输出A
}
}
③ 回调:一种双向调用模式,即A发送消息给B,B处理完后告诉A处理结果。再简单点就是A调用B,B调用A。
具体说来:就是A类中调用B类中的某个方法C,然后B类中反过来调用A类中的方法D,D这个方法就叫回调方法。
package com.test0;
class A {
public void methodA(){
B b = new B();
b.methodB();
System.out.println("this is class A method : methodA");
}
public void callBack(){
System.out.println("this is class A method : callBack");
}
}
class B {
public void methodB() {
System.out.println("this is class B method : methodB");
A a = new A();
a.callBack();
}
}
public class t0 {
public static void main(String[] args) {
A a = new A();
a.methodA();
}
}