`

同步/异步,阻塞/非阻塞,并行/串行

    博客分类:
  • java
阅读更多

同步:

methodA();

System.out.println(“synchronized”);

 

以上这个例子中,程序在运行时,调用了某个方法methodA,方法A运行完返回后,才执行打印,这就是同步。

 

异步:

当我们js中用ajax向服务器发送一个请求,服务器还没有响应(返回),我们的程序可以不管而继续往下执行,这就是异步。

 

阻塞:

当我们线程需要用某个打印机进行打印,但该打印机被另一线程占用,这个时候我们的线程就是进行阻塞,等待打印机空闲,这就是阻塞。

同步阻塞IO,是指我们向系统请求读某个文件(或者网络IO)时,系统内核需要等待数据准备完毕,才把数据从内核缓存写入到进程,这个过程,线程进入阻塞队列,待数据准备完毕。

 

非阻塞:

线程向系统请求读(网络IO)操作时,只发出指令,不需要进入阻塞队列等待数据准备完毕,而是通过轮循去看系统内核是否准备数据完毕,或者内系统内核完成后通知线程,这就是非阻塞。

同步与阻塞:最大的区别在于,同步的时候线程还是激活运行状态的,但阻塞的话,线程是进入阻塞队列被挂起的。

阻塞是调用线程的一种状态或行为,它的作用是放弃占用的cpu;而同步是多个线程之间的协调机制,它的作用是为了保证操作的顺序是正确可预期。

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    C++ 线程(串行 并行 同步 异步)详解

    C++ 线程(串行 并行 同步 异步)详解 C++ 线程是指在程序中可以同时执行多个任务的技术,通过线程可以提高程序的执行效率和响应速度。在 C++ 中,线程可以分为串行线程和并行线程两种。 串行线程(Serial Thread...

    C++串口通信类(阻塞和非阻塞都支持)

    5. 多线程或异步处理:在非阻塞模式下,可以使用C++11引入的std::future、std::async或Boost.Asio的异步操作,实现串口通信与其他任务的并行处理。 6. 关闭串口:通信完成后,记得关闭串口,释放资源。 通过以上...

    解决任意的多线程并行、串行、阻塞、依赖、回调的并行框架

    本文将深入探讨如何解决多线程中的并行、串行、阻塞、依赖和回调问题,以及京东主App后台采用的一站式解决方案——"解决任意的多线程并行、串行、阻塞、依赖、回调的并行框架"。 首先,我们要理解并行和串行的概念...

    异步协程框架SOA服务化调用支持并行串行调用请求合并

    首先,异步协程是一种编程模型,它允许程序在不使用线程和锁的情况下实现非阻塞I/O操作。这种模型通过切换协程上下文来执行多个任务,而无需进行昂贵的系统级线程切换。在处理网络I/O密集型任务,如SOA服务调用时,...

    GCD最全教程异步串行并发多任务依次执行中断附带备注

    - 使用串行队列可以确保任务按照添加的顺序依次执行,无论任务是同步还是异步。 - 使用`dispatch_barrier_async`可以在并行队列中创建一个屏障,确保屏障前的任务全部执行完毕后,再执行屏障后的任务。 ### **5. ...

    毕设&课程作业_基于stm32单片机的异步非阻塞式处理框架.zip

    "毕设&课程作业_基于stm32单片机的异步非阻塞式处理框架.zip" 这个标题表明了这是一个关于毕业设计或课程作业的项目,核心是基于STM32单片机实现的一个异步非阻塞式的处理框架。STM32是一种广泛应用的微控制器,具有...

    通用同步异步收发器

    通用同步异步收发器(Universal Asynchronous Receiver/Transmitter,UART)是一种常见的串行通信接口,广泛应用于微控制器如STM8S系列中。在STM8S芯片中,UART3是其中的一个实例,用于实现设备间的串行通信。在本...

    swift-异步请求串行形成任务链当其中一个任务中断则断开整条任务链

    `OperationQueue`是Apple提供的原生解决方案,可以方便地管理一组操作,并按照定义的依赖关系和串行/并行方式执行它们。而`Promise`则是一种更现代化的异步编程模型,它允许我们构建链式调用,每个`Promise`代表一个...

    com_class.zip_串口 异步_串口通信类_同步 串口_异步_异步 串口 通信

    串口通信,也称为UART(通用异步收发传输器),是一种基于并行到串行的数据转换方式,通过串行线路进行数据传输。在早期的个人计算机中,COM1和COM2接口就是典型的串行端口,而现在则更多地被USB转串口或内置的UART...

    Linux环境下I_O重定向与异步通信的实现.pdf

    在本文中,通过使用异步非阻塞I/O,系统能够同时处理多个数据传输请求,提升了整个系统的并行处理能力和响应速度,这对于视频监控和图像分析等实时性要求高的应用尤其关键。 在视频监控和图像分析系统中,DSP模块...

    Node.js-each-async-异步并行迭代器(异步forEach)

    在Node.js环境中,异步编程是核心特性之一,它使得我们可以高效地处理I/O操作而不会阻塞主线程。`each-async`库提供了一个异步并行迭代器,类似于JavaScript数组的`forEach`方法,但针对异步操作进行了优化。这个库...

    OC-串行队列在异步线程中执行

    异步执行意味着任务会在后台线程中执行,不会阻塞主线程,从而保持用户界面的响应性。在上述代码中,`dispatch_async`函数会立即返回,而任务则会在稍后由GCD调度到合适的线程执行。 串行队列在异步线程中的优势...

    高性能计算之并行编程技术—— MPI并行程序设计.zip

    4. **MPI通信函数**:详细讲解`MPI_Send`、`MPI_Recv`、`MPI_Isend`、`MPI_Irecv`等函数的使用,以及非阻塞通信的同步和异步模型。了解缓冲区、标签和请求句柄的作用。 5. **MPI并行算法设计**:学习如何将串行算法...

    Java异步编程框架之Promise介绍

    Java异步编程框架Promise是用于处理异步操作的一个重要工具,尤其在Java中,Promise的概念被广泛应用...同时,理解Promise的用法,异步API的几种风格,以及并行和串行调用的场景,对于编写高效的Java异步程序至关重要。

    用nio实现异步连接池

    #### 非阻塞I/O在异步连接池中的应用 在异步连接池的设计中,非阻塞I/O的使用至关重要。相比于传统的阻塞I/O,非阻塞I/O允许单个线程管理多个网络连接,从而减少了线程资源的消耗。具体实现上,Selector可以监听多...

    串行通信动态连接库

    在这个库中,重点是实现了异步读写操作和非阻塞模式,这些都是高级串行通信的关键特性。 首先,让我们详细了解一下“串行通信”。串行通信是指数据以单比特顺序的方式进行传输,相对于并行通信(多比特同时传输),...

    iOS多线程-GCD(异步任务,线程锁)

    异步执行是GCD中的重要特性,它能让任务在后台执行,不阻塞主线程,从而避免UI卡顿。在创建任务时,我们可以选择异步或同步执行。异步任务通常与并行队列搭配使用,以实现真正的并发执行。例如: ```swift Dispatch...

    MFC串口异步同步通信实例源码.zip

    在MFC中,同步通信通常通过阻塞调用来实现,如`ReadFile`和`WriteFile`函数,当数据未准备好或未完全发送时,这些函数会挂起执行,直到数据传输完成。 异步通信则允许程序在等待数据传输的同时执行其他任务,提高...

Global site tag (gtag.js) - Google Analytics