浅谈同步与异步,以及多线程

1.同步与异步

    我们在开发过程中肯定对异步,同步这两个词很熟悉,那么同步与异步到底是什么意思?他们的区别在哪里呐?

     1.1:简单来说同步就是线性相关的,异步线性无关,

     1.2:同步:假如有两个方法依次A(),B(),同步意思就是A()执行完成后再执行B();等程序有响应或返回结果后再执行下一步

     1.3:  异步:同上,有可能在A()方法未执行完成就执行B();程序不一定有响应或返回结果才执行下一步;

其实我们开发中很多地方都有展现对同步与异步的解释区别,比如说异步网络请求?我们是不是都在请求完成后的回调方法里面执行下一步?为什么不直接在请求方法下面直接执行下一步呐?因为异步不一定等有响应或返回结果才执行下一步,这样的话我们的程序很容易奔溃

2.多线程

 我们知道我们运行app的时候都会启动一个进程,而这个进程包含了一个主线程,一个进程至少有一个线程,如果一个进程中有多个线程那么就称之为多线程了。有朋友可能会想既然启动app就会启动一个主线程,是不是我们再开启一个子线程就叫多线程了呐?我想应该是这样的吧;其实在我们开发中也是有很多多线程的列子:

   2.1:handler机制,说到handler机制我想很多初级开发者都对这个词不陌生,因为每当面试的时候都会问这个问题?那么什么是handler机制或者handler机制的原理是什么呐?

      1.就像上面说得一样,每个app都会有一个主线程,而这个主线程会持有一个looper对象,然后一个looper对象对应一个MessageQueue, 当我们在主线程中创建handler对象的时候,那么handler会把一个个消息对象放到MessageQueue中,通过sendmessage发送给handler对象处理,从而进行一些ui操作,常见的就是网络请求数据后切换到主线程更新Ui,这个过程就是hanlder+message机制,也是多线程机制

     2.另外一个AsyncTask异步我就不多说了,总之咋们开发中所有有网络请求的地方都会有多线程机制,可能有些网络框架封装好了异步操作,不用手动切换到主线程,但是都离不开子线程切换到主线程这一步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值