线程的同步和异步有何异同
2016-10-28 11:12
127 查看
如果有一个资源需要被一个或多个线程共享,这个资源就变成了“竞争”资源,此时多条线程必须按某种既定的规则、依次访问、修改这个“竞争”资源,当一条线程正在访问、修改该“竞争”资源时,其他线程不能同时修改这份“竞争”资源,这就是同步处理。
对于一个银行账户,如果有多个线程试图去访问这个账户时,如果不对多个线程进行同步控制,有可能账户余额只有1000块,但多个线程都试图取款800块时,这些线程同时判断余额之后,都会显示余额足够,从而导致每个线程都取款成功。这显然不是我们希望看到结果。
当程序试图执行一个耗时操作时,程序不希望阻塞当前执行流,因此程序也不应该试图立即获取该耗时操作返回的结果,此时就使用异步编程了,典型的应用场景就是Ajax。当浏览器通过JavaScript发出一个异步请求之后,JavaScript执行流并不会停下来,而是继续向下执行,这就是异步。程序会通过监听器来监听远程服务器响应的到来。
对于一个银行账户,如果有多个线程试图去访问这个账户时,如果不对多个线程进行同步控制,有可能账户余额只有1000块,但多个线程都试图取款800块时,这些线程同时判断余额之后,都会显示余额足够,从而导致每个线程都取款成功。这显然不是我们希望看到结果。
当程序试图执行一个耗时操作时,程序不希望阻塞当前执行流,因此程序也不应该试图立即获取该耗时操作返回的结果,此时就使用异步编程了,典型的应用场景就是Ajax。当浏览器通过JavaScript发出一个异步请求之后,JavaScript执行流并不会停下来,而是继续向下执行,这就是异步。程序会通过监听器来监听远程服务器响应的到来。
相关文章推荐
- 让那些做面试官的屌丝lead不再抖脚系列(二)---同步异步探讨->线程的一些方法
- 同步异步线程进程的一些思考
- 线程的同步异步,以及具体代码实现,使用场景
- java 总结几种线程异步转同步的方法
- 进程、线程知识点总结和同步(消费者生产者,读者写者三类问题)、互斥、异步、并发、并行、死锁、活锁的总结
- 同步、回调、异步、线程
- 【Java面试题】25 同步和异步有何异同,在什么情况下分别使用他们?举例说明。
- Android 中aidl调用执行线程和同步异步问题
- C# :线程中操作多控件 (委托实现异步及同步的方法)
- iOS中多线程知识总结:进程、线程、GCD、串行队列、并行队列、全局队列、主线程队列、同步任务、异步任务等(有示例代码)
- C#异步调用和线程的同步
- java线程 同步与异步 线程池
- 线程的同步和异步
- 【pthread系列-1】同步异步线程进程的一些思考
- 用GCD线程组与GCD信号量将异步线程转换为同步线程
- 同步任务处理:异步线程中实时更新视图的处理(笔记)
- 同步和异步有何异同
- 同步和异步有何异同
- 通过使用Thread.join()函数使异步线程变得同步
- java 线程之对象的同步和异步