同步:发送一个请求,等待返回,然后再发送下一个请求
异步:发送一个请求,不等待返回,随时可以再发送下一个请求
同步可以避免出现死锁,读脏数据的发生,一般共享某一资源的时候用,如果每个人都有修改权限,同时修改一个文件,有可能使一个人读取另一个人已经删除的内容,就会出错,同步就会按顺序来修改。
异步则是可以提高效率了,现在cpu都是双核,四核,异步处理的话可以同时做多项工作,当然必须保证是可以并发处理的。
这些都是对的。
同步和异步最大的区别就在于。一个需要等待,一个不需要等待。
比如广播,就是一个异步例子。发起者不关心接收者的状态。不需要等待接收者的返回信息
电话,就是一个同步例子。发起者需要等待接收者,接通电话后,通信才开始。需要等待接收者的返回信息
阻塞
阻塞调用是指调用结果返回之前,当前线程会被挂起。函数只有在得到结果之后才会返回。有人也许会把阻塞调用和同步调用等同起来,实际上他是不同的。对于同步调用来说,很多时候当前线程还是激活的,只是从逻辑上当前函数没有返回而已。例如,我们在CSocket中调用Receive函数,如果缓冲区中没有数据,这个函数就会一直等待,直到有数据才返回。而此时,当前线程还会继续处理各种各样的消息。如果主窗口和调用函数在同一个线程中,除非你在特殊的界面操作函数中调用,其实主界面还是应该可以刷新。socket接收数据的另外一个函数recv则是一个阻塞调用的例子。当socket工作在阻塞模式的时候,如果没有数据的情况下调用该函数,则当前线程就会被挂起,直到有数据为止。
非阻塞
非阻塞和阻塞的概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。
对象的阻塞模式和阻塞函数调用
对象是否处于阻塞模式和函数是不是阻塞调用有很强的相关性,但是并不是一一对应的。阻塞对象上可以有非阻塞的调用方式,我们可以通过一定的API去轮询状态,在适当的时候调用阻塞函数,就可以避免阻塞。而对于非阻塞对象,调用特殊的函数也可以进入阻塞调用。函数select就是这样的一个例子。
分享到:
相关推荐
Java同步与异步 Java同步与异步是Java编程中非常重要的概念,它们都是为了解决多线程环境中的线程安全问题。在多线程环境中,如果没有正确的同步机制,多个线程可能会同时访问共享资源,导致数据不一致和其他严重...
在Java编程语言中,同步(Synchronization)与异步(Asynchronization)是两个非常重要的概念,它们对于多线程处理和并发控制有着不可替代的作用。本文将深入探讨这两个概念的区别及其在Java中的具体应用。 #### 一...
在本文中,我们将讨论基于系统底层通信技术Socket 的JAVA IO同步和异步操作,包括阻塞(Blocking)和非阻塞(Non-Blocking)IO 操作。 同步(Synchronous)IO 同步IO 是指应用程序在执行IO 操作时,需要等待IO ...
### Java中的同步与异步详解 #### 一、同步与异步的概念理解 在软件开发领域,特别是针对并发处理和网络编程时,我们经常会遇到“同步”与“异步”这两个概念。简单来说: - **同步(Synchronous)**:指的是程序...
wait和notify方法是Java中最基本的同步机制,通过使用锁机制来实现异步调用转同步。下面是一个使用wait和notify方法的示例代码: ```java public class Demo1 extends BaseDemo { private final Object lock = ...
Java同步与异步 Java 同步与异步是一种编程技术,旨在解决多线程环境下的数据一致性和可见性问题。下面是 Java 同步与异步的定义和概念: 关键字: * thread(线程):Java 中的基本执行单元,能够独立执行一...
Java 同步、异步、阻塞和非阻塞分析 Java 中的同步、异步、阻塞和非阻塞是四个相关但不同的概念,它们都是在多线程编程中解决耗时操作的方法。在这里,我们将详细介绍这些概念之间的区别和联系。 同步...
JAVA邮件发送工具类(支持同步和异步发送邮件以及附件信息),支持多个抄送邮件发送。
Java中的同步和异步是两种不同的处理方式,它们在多线程编程中起着至关重要的作用,尤其是在构建高效、响应迅速的应用程序时。同步和异步的主要区别在于它们如何管理和控制对资源的访问以及任务的执行顺序。 同步...
今天,我们将详细介绍JAVA同步、异步、阻塞和非阻塞之间的区别。 同步和异步 同步和异步描述的是消息通信的机制。同步是指当一个request发送出去以后,会得到一个response,这整个过程就是一个同步调用的过程。...
Java同步与异步编程是多线程编程的核心内容,在Java中,线程同步与异步处理是保证程序正确执行的关键技术。本文将详细介绍Java中的线程同步机制、线程安全的实现以及异步执行的相关知识点。 首先,了解Java中的线程...
本篇文章将详细介绍如何使用Java的HttpClient实现异步请求资源。 首先,让我们了解什么是异步请求。在同步请求中,调用一个API或发送一个HTTP请求后,程序会等待响应返回,然后继续执行后续代码。而异步请求则不同...
总结来说,Socket异步和同步使用在C#编程中涉及的主要知识点包括: 1. **Socket基本概念**:理解Socket作为网络通信接口的作用,掌握其工作原理。 2. **同步与异步通信**:了解同步Socket阻塞的特点,以及异步...
本篇文章将深入探讨如何使用Java实现图片的异步和同步上传,并讲解如何实现在页面上即时回显。 首先,我们需要理解同步与异步的概念。在编程中,同步操作意味着一个任务执行完毕后才会执行下一个任务,而异步则允许...
总之,Java中的HTTP异步请求通过`HttpAsyncClients`和自定义的回调处理类,如`AsyncClientHttpExchangeStreaming`,提供了高效的网络通信能力,尤其适合大数据量、高并发的场景。理解和熟练运用这些技术,对于提升...
在Spring框架中,线程池的使用是实现并发和异步任务执行的关键工具。线程池的概念源于Java的`java.util.concurrent.ExecutorService`接口,它允许我们管理一组可重用的工作线程,以提高系统效率并减少资源消耗。...
在Java编程中,异步调用是一种非常重要的技术,它允许程序在等待某个耗时操作完成时继续执行其他任务,从而提高系统效率和响应性。本文将深入探讨如何使用Java来实现异步调用,以及它在后端开发中的应用。 1. **...
标签“多线程”强调了Java并发编程的核心概念,如线程的创建、同步、通信和状态管理。例如,`synchronized`关键字用于确保对共享资源的互斥访问,防止数据竞争;`wait()`, `notify()`和`notifyAll()`方法用于线程间...
Java中的半同步半异步模式旨在解耦并发系统中的异步和同步处理,提高效率和性能。该模式对于管理软件系统中的复杂并发操作特别有用。 ## 二、详细解释及实际示例 1. **实际示例**: - 想象一个繁忙的餐厅厨房,...