什么是异步?
说到异步,肯定会联系出来它的孪生兄弟–同步
同步:
后一个任务需要等待前一个任务执行结束,然后再执行。
也就是任务的排列先后会决定任务的执行顺序。
异步:
异步与同步相对,当一个异步过程调用发出后,调用者在没有得到结果之前,就可以继续执行后续操作。
下面来一段代码验证异步
// 回调方法类
public interface MyCallBack {
void callBack(Object object);
}
// 异步调用类
public class AsynTask {
public void task(final MyCallBack callBack){
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(2000);
}catch(Exception e){
e.printStackTrace();
}
int num = 0;
for(int i = 0; i<100;i++){
num++;
}
callBack.callBack(num);
}
});
thread.start();
}
}
// 测试类
public class TestAsyn {
public static void main(String[] args) {
//调用异步任务
new AsynTask().task(new MyCallBack() {
//调用回调方法
@Override
public void callBack(Object object) {
System.out.println("异步调用执行结果:" + object);
}
});
System.out.println("主线程等待异步执行结果");
try{
Thread.sleep(5000);
}catch (Exception e){
e.printStackTrace();
}
}
}
执行结果:
查看代码及结果我们发现,主线程的输出语句在调用异步任务之后,却先于异步方法输出了【主线程等待异步执行结果】,在这之后异步线程才进行回调输出【异步调用执行结果:100】