zoukankan      html  css  js  c++  java
  • IT题库6-同步和异步

    同步就是许多线程同时共用一个资源,一个线程在用别的线程就要等待。异步相反,可以不用等待。

    同步:发送一个请求,等待返回,然后才能再发送下一个请求;
    异步:发送一个请求,不等待返回,随时可以再发送下一个请求;

    同步可以避免出现死锁,读脏数据的发生。一般共享某一资源的时候用,如果每个人都有修改权限,同时修改一个文件,有可能使一个人读取另一个人已经删除的内容,就会出错。而同步就会按顺序来修改。

    异步则是可以提高效率了。现在cpu都是双核,四核,异步处理的话可以同时做多项工作。当然必须保证是可以并发处理的。

    同步和异步最大的区别就在于。一个需要等待,一个不需要等待。

    比如电话,就是一个同步例子。发起者需要等待接收者,接通电话后,通信才开始。需要等待接收者的返回信息。

    广播,就是一个异步例子。发起者不关心接收者的状态。不需要等待接收者的返回信息。

    经常看到介绍 ArrayList 和HashMap是异步,Vector和HashTable是同步,这里同步是线程安全的,异步不是线程安全的,举例说明:
    当创建一个Vector对象时候,
    Vector ve=new Vector(); 
    ve.add("1");
    当在多线程程序中,第一个线程调用修改对象ve的时候,就为其上了锁,其他线程只有等待。


    当创建一个ArrayList对象时候,
    ArrayList list=new ArrayList(); 
    list.add("1");
    当在多线程程序中,第一个线程调用修改对象list的时候,没有为其上锁,其他线程访问时就会报错。
    eg:list.remove("1"),然后再由其他线程访问list对象的1时就会报错。

  • 相关阅读:
    Angularjs演示Service功能
    初始化应用程序数据ng-init指令
    AngularJs的ng-include的使用与实现
    把视图转换为字符串
    学习angularjs的内置API函数
    AngularJs自定义过滤器filter
    ASP.NET MVC的切片(Section)脚本(script)
    在ASP.NET MVC部署AngularJs
    MS SQL的某一数据库成了Single User模式
    AngularJs的MVC模式
  • 原文地址:https://www.cnblogs.com/sikewang/p/9627340.html
Copyright © 2011-2022 走看看