• 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时就会报错。

  • 相关阅读:
    Splay复习
    带权并查集复习-HDU3038
    罗素悖论-图灵停机问题
    数独解法c++实现
    状压DP NOI2001 炮兵阵地
    区间第k大数
    分块随笔T2
    分块感想
    webkit的高级属性
    设计模式
  • 原文地址:https://www.cnblogs.com/sikewang/p/9627340.html
Copyright © 2020-2023  润新知