多线程:什么是同步与异步?二者的区别 您所在的位置:网站首页 Java中异步和同步 多线程:什么是同步与异步?二者的区别

多线程:什么是同步与异步?二者的区别

2024-07-10 17:03| 来源: 网络整理| 查看: 265

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

“同步、异步”这个在我们学习多线程的时候,会接触到这个概念,后面所学的一系列多线程知识运用也是以这两个点开展的。由于学习的时候囫囵吞枣,导致我对这两个概念没法准确说出定义及其区别,现在记录一下。 如果光从字面上理解:

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

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

什么意思呢?

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

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

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



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有