java学习笔记之同步回调和异步回调

回调:回调就是指互相调用,类A调用类B的方法,被调用的类B的方法有调用类A的方法。可以用接口的多态性来实现。回调可以分为同步回调和异步回调。
同步回调:就是要按照顺序来。上代码:

package com.ykh;

public class ClassA  implements callback{
	public void funA() {
		System.out.println("现在演示同步回调");
		ClassB b=new ClassB();
		b.funB(this);
		System.out.println("因为是同步调用,所以这句话要在回调完成后才会执行");
	}
	public void funA1() {
		System.out.println("这是要被回调的方法");
	}
}
//用接口声明就要被回调的方法。被回调的类中实现具体的方法
interface callback{
	void funA1();
}
package com.ykh;

public class ClassB {
	public void funB(callback a) {
		System.out.println("这是类b的第一个方法");
		a=new ClassA();
		a.funA1();//回调classA中的方法。
	}

}

package com.ykh;

public class Test {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		ClassA a=new ClassA();
		a.funA();

	}

}

同步回调就是A调用B的方法,B实现完所有的方法后代码在继续执行下去。
异步调用是指在调用B的方法是会消耗许多时间,而A接下来的执行又不需要B方法的协助,就可以为B重开一个线程。
代码:

package com.ykh;

public class ClassA  implements callback{
	public void funA() {
		System.out.println("现在演示同步回调");
		new Thread(new Runnable() {
			@Override
			public void run() {
				ClassB b=new ClassB();
				b.funB(ClassA.this);
			}	
		}).start();
		
		System.out.println("因为是异步调用,所以这这句话要在回调完成前才会执行");
	}
	public void funA1() {
		System.out.println("这是要被回调的方法");
	}
}

interface callback{
	void funA1();
}

package com.ykh;

public class ClassB {
	public void funB(callback a) {
		try {
			Thread.sleep(2000);
		} catch (InterruptedException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
		System.out.println("这是类b的第一个方法");
		a=new ClassA();
		a.funA1();
	}

package com.ykh;

public class Test {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		ClassA a=new ClassA();
		a.funA();

	}

}

运行结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42902163/article/details/88946028