当前位置:网站首页 > 技术博客 > 正文

同步线程和异步线程的区别



今天看到一道面试题:同步与异步有什么区别?

  • 同步,就是一起/同时进行的意思。
  • 异步,分开进行。
    异步从字面上去理解还说得通顺,同步如果按照字面意思去理解就不行了。就如同“并行”与“并发”一样。
    我们先回顾下:

多线程环境中,经常会碰到数据的共享问题,即当多个线程需要访问同一个资源时,他们需要以某种顺序来确保该资源在某一时刻智能被一个线程使用,否则程序的运行结果将不可预料,在这种情况下就必须对数据进行同步。

什么意思呢?

举个栗子,甲乙现在各要打印一份文件(一人一台电脑连接打印机),共享一台打印机。两人同时在自己电脑上操作打印文件。那么这个时候问题来了,如果打印机同时响应两个人的请求,那么是先打印甲的还是乙的,或是两份文件错乱?

面对这样的问题,同步机制就起作用了。当甲乙两个人发出打印请求后,两个线程竞争资源,当甲的线程竞争到资源(打印机)后,乙的线程就一直等待,直到甲的任务完成结束对资源的使用,乙的打印任务才开始。
这就是同步了,简单的说:同步就是任务必须一个个的来进行,a完成了,才可以进行b。
异步操作,这个就比较容易理解。就如同ajax一样,它也是异步的,道理是一样的。不同的线程之间,不一定都是竞争同个资源的,并且如果它们相互之间状态或行为不影响,那么便可以分别进行,同时开展。

举个例栗子,我们使用浏览器的时候,通常都是多开网页的。你打开一个360浏览器(此时便创建了一个进程),然后打开一个网页看小说(线程1),同时打开一个网页看电视剧(线程2)。这两者便是异步。

  • 上一篇: redis入门指南
  • 下一篇: xml数据转换为json
  • 版权声明


    相关文章:

  • redis入门指南2025-03-06 10:29:59
  • 基于内容的推荐算法2025-03-06 10:29:59
  • xml转json对象2025-03-06 10:29:59
  • 计算机网络系统主要由什么构成?2025-03-06 10:29:59
  • c++默认拷贝构造函数2025-03-06 10:29:59
  • xml数据转换为json2025-03-06 10:29:59
  • 面试被问到怎么做接口测试2025-03-06 10:29:59
  • wsd打印设备没有驱动程序怎么办2025-03-06 10:29:59
  • css中字体属性2025-03-06 10:29:59
  • 位运算之左移右移运算之详解2025-03-06 10:29:59