关于同步异步
2015-08-03 14:49
232 查看
何为同步和异步Android Telephony相关应用中,Telephony大量使用了Handler、Broadcast等通信方式,而在Android操作系统平台中的Handler消息处理、Broadcast广播消息等均采用异步通信机制,那么我们首先要清楚什么是异步通信机制,与它相对同步的通信机制是什么,有什么区别。Synchronous(同步)和Asynchronous(异步)的概念最早来自通信领域。通信的同步:指客户端在发送请求后,必须要在服务端有回应后客户端才继续发送其他请求,所以这时所有请求将会在服务端得到同步,直到服务端返回请求。通信的异步:指客户端在发送请求后,不必等待服务端的回应就可以发送下一个请求,对所有的请求动作来说将会在服务端得到异步,这条请求的链路就像是一个请求队列,所有的请求动作在这里不会得到同步。在软件世界中,我们常说的“同步和异步”,更多是指函数、方法调用的“同步和异步”,也就是“同步调用和异步调用”。所谓同步调用,在发起一个函数或方法调用时,没有得到结果之前,该调用就不返回,直到返回结果;异步调用的概念和同步相对,在一个异步调用发起后,被调用者立即返回给调用者,但调用者不能立刻得到结果,被调用者在实际处理这个调用的请求完成后,通过状态、通知或回调等方式来通知调用者请求处理的结果。注意 现在清楚同步和异步吗?简单地说,同步就是发出一个请求后什么事都不做,一直等待请求返回后才会继续做事;异步就是发出请求后继续去做其他事,这个请求处理完成后会通知你,这时候就可以处理这个回应了。单从任务调用来讲,对于同一个任务,异步调用并不能加快这个任务的执行速度和效率,相反会降低执行速度和效率。站在整个系统的层面上考虑,异步调用使得整个系统的性能效率提高,各个组件之间运行配合更加协调。这才是异步调用的真正优点。
一、在你的Activity中写一个内部类: private class TestAsyncTask extends AsyncTask<String, Void, Boolean> { @Override protected void onPreExecute() { //最先执行的就是这个。 } @Override protected Boolean doInBackground(String... params) { //这个是在后台执行的东西,就是说,它自动另外开了个线程运行,不影响你现在做的东西。 } @Override protected void onPostExecute(Boolean result) { if (result) { //后台执行的完毕后,它会用Result通知这里,就是执行这里了。 } else { //所以最好判断一下result,写个else,判断后台执行的东西是不是出问题了。 } } } 二,在你的onCreate的时候启动这个异步,启动代码如下: new TestAsyncTask().execute(""); 三,异步 和 同步的区别 异步的好处,就是把一些东西,特别是耗时间的东西扔到后台去运行了,doInBackground,程序可以继续做自己的事情,防止程序卡在那里失去响应。 同步执行的话,就是程序会呆板地从头执行到尾,耗时间的东西不执行完,程序不会继续往下走,等待时间长的话,有时候就会造成失去响应了。 请说出你所知道的线程同步的方法。 wait():使一个线程处于等待状态,并且释放所持有的对象的lock。 sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。 notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。 Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。 多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? 多线程有两种实现方法,分别是继承Thread类与实现Runnable接口 同步的实现方面有两种,分别是synchronized,wait与notify
相关文章推荐
- 使用 Syncthing 在多个设备间同步文件
- C#实现多线程的同步方法实例分析
- ruby实现的一个异步文件下载HttpServer实例
- 科学知识:同步、异步、阻塞和非阻塞区别
- 同步文件备份工具 Super Flexible File Synchronizer Pro v4
- 探讨Ajax中同步与异步之间的区别
- C#线程同步的三类情景分析
- C#中异步回调函数用法实例
- C++使用CriticalSection实现线程同步实例
- C#实现异步GET的方法
- 基于C#实现的多生产者多消费者同步问题实例
- C#异步执行任务的方法
- ASP.NET之自定义同步HTTP处理程序(图文教程)
- 深入理解JavaScript编程中的同步与异步机制
- C#中线程同步对象的方法分析
- Jquery异步提交表单代码分享
- JQuery异步获取返回值中文乱码的解决方法
- jQuery实现文本框输入同步的方法
- 异步编程需要“意识” 推荐