【问题标题】:The term "synchronous" in Java concurrent programming has anything to do with synchronization in synchronous/asynchronous?Java并发编程中的“同步”一词与同步/异步中的同步有什么关系?
【发布时间】:2020-05-11 10:03:03
【问题描述】:
  1. 并发、并行、串行。
  2. 同步、异步。
  3. 线程同步。

这些术语之间有什么关系吗?

希望有人能回答我,谢谢!

【问题讨论】:

    标签: java asynchronous concurrency


    【解决方案1】:

    1和2之间有联系。

    • 并发和并行处理通常涉及异步通信模式。
    • 同步通信模式意味着被调用者和调用者串行操作

    1 和 3 之间存在微弱的联系。

    • 您可以使用线程来实现并发性或并行性,而在共享状态下运行的线程需要适当的同步。

    2 和 3 之间的联系更加微妙。

    • 如果您在线程之间实现任何通信(同步或异步),则很可能涉及某种形式的线程同步。 (但并非总是如此,也不一定使用synchronized 方法或块。)

    但我认为这可能无法帮助您理解相应的术语。我认为你最好阅读更广泛的……更深入的……关于各自的概念。它们之间的联系不是很具有启发性。

    【讨论】:

      【解决方案2】:

      通常并行任务需要交互:一个接一个地启动,或者将计算值从一个任务传递给另一个任务。

      交互可以有两种:同步和异步。同步交互假设一个或两个交互线程被挂起,直到满足预期的条件,如Future.get()BlockingQueue.take()

      异步交互通常被实现为一个(回调)方法调用,它表示满足条件。信号的接受者决定做什么:开始新任务,恢复线程,或者只记住信号。例如CompletableFuture.whenComplete(BiConsumer)

      同步和异步交互都是通过线程同步实现的。

      【讨论】:

        猜你喜欢
        • 2010-10-24
        • 2014-01-05
        • 1970-01-01
        • 2013-04-26
        • 2012-06-13
        • 2012-09-09
        • 1970-01-01
        • 2012-02-03
        相关资源
        最近更新 更多