zoukankan      html  css  js  c++  java
  • 同步和异步的区别、同步与阻塞的关系

    • 同步

         同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。  

      要想实现同步操作,必须要获得线程的对象锁。获得它可以保证在同一时刻只有一个线能够进入临界区,并且在这个锁被释放之前,其他的线程都不能再进入这个临界区。如果其他线程想要获得这个对象的锁,只能进入等待队列等待。只有当拥有该对象锁的线程退出临界区时,锁才会被释放,等待队列中优先级最高的线程才能获得该锁。

          实现同步的方式有两种:同步方法、同步代码块。

    • 异步

         当一个异步过程调用发出后,调用者不会立刻得到结果。实际处理这个吊用的部件是在调用发出后,通过状态、通知来通知调用者,或通过回调函数处理这个调用。  

      由于每个线程都包含了运行时自身所需要的数据或方法,因此,在进行输入输出时,不必关系其他线程的状态或行为,也不必等到输入输出处理完毕才返回。当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,异步能够提高程序的效率。

    • 阻塞

      阻塞调用是指调用结果返回之前,当前线程会被挂起。函数只有在得到结果之后才会返回。

    • 非阻塞

      指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。

            

    • 同步与阻塞

           同步是个过程,阻塞是线程的一种状态。多个线程操作共享变量时可能会出现竞争。这时需要同步来防止两个以上的线程同时进入临界区,在这个过程中,后进入临界区的线程将阻塞,等待先进入的线程走出临界区。

    • 线程同步一定发生阻塞吗?

           线程同步不一定发生阻塞!!!线程同步的时候,需要协调推进速度,互相等待和互相唤醒会发生阻塞。

  • 相关阅读:
    dedecms初解
    Java二十三设计模式之------单例模式
    Java二十三设计模式之------工厂方法模式
    数组和集合的区别及深入了解
    团队项目计划
    团队介绍及团队题目
    第二阶段冲刺(第十天)
    第二阶段冲刺(第九天)
    第二阶段冲刺(第八天)
    第二阶段冲刺(第七天)
  • 原文地址:https://www.cnblogs.com/jiqianqian/p/6650680.html
Copyright © 2011-2022 走看看