`

NIO(一)—— 什么是同步?什么是异步?

    博客分类:
  • NIO
 
阅读更多

       同步:如果有多个任务或者事件要发生,这些任务或者事件必须逐个地进行,一个事件或者任务的执行会导致整个流程的暂时等待,这些事件没有办法并发地执行;

       异步:如果有多个任务或者事件发生,这些事件可以并发地执行,一个事件或者任务的执行不会导致整个流程的暂时等待。

       举个简单的例子,假如有一个任务包括两个子任务A和B,对于同步来说,当A在执行的过程中,B只有等待,直至A执行完毕,B才能执行;而对于异步就是A和B可以并发地执行,B不必等待A执行完毕之后再执行,这样就不会由于A的执行导致整个任务的暂时等待。

       

       事实上,同步和异步是一个非常广的概念,它们的重点在于多个任务和事件发生时,一个事件的发生或执行是否会导致整个流程的暂时等待。我觉得可以将同步和异步与Java中的synchronized关键字联系起来进行类比。当多个线程同时访问一个变量时,每个线程访问该变量就是一个事件,对于同步来说,就是这些线程必须逐个地来访问该变量,一个线程在访问该变量的过程中,其他线程必须等待;而对于异步来说,就是多个线程不必逐个地访问该变量,可以同时进行访问。

    因此,个人觉得同步和异步可以表现在很多方面,但是记住其关键在于多个任务和事件发生时,一个事件的发生或执行是否会导致整个流程的暂时等待。一般来说,可以通过多线程的方式来实现异步,但是千万记住不要将多线程和异步画上等号,异步只是宏观上的一个模式,采用多线程来实现异步只是一种手段,并且通过多进程的方式也可以实现异步。

 

 

 

分享到:
评论

相关推荐

    javaNIO学习笔记(csdn)————程序.pdf

    Java NIO,全称Non-Blocking Input/Output,是非阻塞式输入输出,它是Java从1.4版本开始引入的一种新的I/O模型,为Java程序员提供了处理I/O操作的新方式。NIO的主要特点是其能够使Java程序以更有效的方式处理I/O流,...

    _NIO原理剖析 (1).pdf

    Java NIO引入了一个重要的概念——选择器 Selector。选择器允许单个线程管理多个网络连接,它会监视多个输入通道,当某个通道有可处理的IO事件时,如数据到达或通道可写,选择器会通知程序进行相应的操作。这种方式...

    利用JDK7的NIO2.0进行I/O读写和监视

    在Java编程领域,JDK 7引入了一个重要的更新——NIO2.0,也被称为“New I/O 2.0”或“AIO”(Asynchronous I/O)。这个更新极大地提升了Java处理I/O操作的能力,特别是在文件系统交互和网络通信方面。NIO2.0主要增加...

    nio-2015:NIO 2015 第二轮——我的解决方案

    标题 "nio-2015:NIO 2015 第二轮——我的解决方案" 提到了 "NIO",这是Non-blocking I/O(非阻塞I/O)的缩写,通常指的是Java平台中的一个特性,它允许程序进行高效的数据读写操作,而不会在等待数据准备就绪时阻塞...

    SocketIO-BIO-NIO-AIO.zip

    SocketIO-BIO-NIO-AIO.zip是一个压缩包文件,它包含了一个关于Java中三种不同的I/O模型——BIO( Blocking I/O)、NIO(Non-blocking I/O)和AIO(Asynchronous I/O)的深入讲解。这些I/O模型是Java进行网络编程时的...

    JavaNIO_API帮助文档详解

    为了解决这些问题,从JDK1.4开始,Java引入了一套新的I/O框架——NIO(Non-blocking I/O),它不仅提供基于缓冲区的操作,还支持非阻塞模式,极大地提高了I/O处理效率。 #### NIO核心组件 NIO的架构主要分布在几个...

    从NIO到NETTY简述.pptx(培训)

    Netty是一个高性能、高可靠性的网络通信框架,它基于Java NIO(Non-blocking I/O)设计,提供了异步、事件驱动的编程模型,简化了网络应用程序的开发过程。本篇文章将从OSI七层模型、TCP与UDP的异同点、BIO、NIO、...

    基于Java的异步输出框架 AsynWriter.zip

    本压缩包"基于Java的异步输出框架 AsynWriter.zip"提供了一个专门用于异步输出的框架——AsynWriter,它旨在解决传统的同步I/O操作可能导致的性能瓶颈问题。 AsynWriter框架的核心思想是利用Java的多线程和非阻塞I/...

    基于事件驱动和异步通信体系结构的Web服务器设计

    为了解决Java JDK1.4 NIO与事件驱动编程模型之间的兼容性和效率问题,研究人员设计了一个名为aSocket的适配子层。aSocket的作用在于封装底层的细节,使得上层应用可以直接使用事件驱动的方式进行异步通信,而无需...

    秋招面经和总结(csdn)————程序.pdf

    6. **BIO/NIO/AIO**:BIO是同步阻塞,NIO是同步非阻塞,AIO(Async IO)是异步非阻塞,AIO在Java 7引入,提高了I/O效率。 7. **多线程**:Java通过继承Thread类或实现Runnable接口创建线程,重写run()方法。线程...

    netty in actin

    - **间接解决问题**:Netty作为一款NIO客户端-服务器框架,遵循David John Wheeler提出的观点——通过添加额外的逻辑层来解决计算机科学中的问题。这一理念贯穿于Netty的设计之中,使其能够在不牺牲性能和可维护性的...

    java面试——杭州-阿里云-Java中级.zip

    这个压缩包文件“java面试——杭州-阿里云-Java中级.zip”包含了一份详细的PDF文档,它可能涵盖了面试中常遇到的问题、技术要点以及解决策略。以下是基于Java中级工程师面试的一些关键知识点: 1. **基础语法**:...

    java从零到精通——较好的学习资料

    在并发编程方面,Java提供了线程(Thread)、同步机制(如synchronized关键字和Lock接口)以及ExecutorService,帮助开发者高效地处理多线程任务。C#也有类似的概念,如Task和Mutex,但其线程池和异步编程模型可能...

    httpasyncclient jar包

    Apache HttpClient项目提供了一个强大的工具集,其中就包括了HTTP异步客户端——httpasyncclient。这个库允许开发者在Java环境中以非阻塞的方式处理HTTP请求,显著提高了并发性能,尤其适用于需要处理大量网络请求的...

    1、丰巢科技(51问)1

    NIO是同步非阻塞I/O,引入了通道(Channel)和缓冲区(Buffer)的概念,允许一个线程监听多个通道的事件,提高了并发处理能力。NIO还可以通过Selector监听连接、读写等事件,使得单线程可以管理多个连接,降低了...

    java网络编程高清pdf

    - **定义**:AIO是在NIO基础上进一步发展而来的一种模型,它不仅实现了非阻塞,还支持真正的异步操作。在AIO中,客户端提交请求后可以立即返回继续执行其他任务,而不需要轮询检查结果是否完成。 - **特点**: - **...

    安卓Android源码——MIUI文件管理器.zip

    【Android 源码解析——MIUI 文件管理器】 在 Android 开发中,理解系统级应用的源码能够帮助开发者深入学习平台的工作机制,提升开发技能。本篇将聚焦于 MIUI 文件管理器的源码分析,这是一款广泛应用于小米手机上...

    计算机专业毕业设计——Java合集(78套).zip

    本资源包“计算机专业毕业设计——Java合集(78套)”提供了丰富的学习材料,涵盖了从基础到高级的Java编程知识,旨在帮助学生进行课程设计和毕业设计,提升实践能力。 一、Java基础知识 1. Java语言简介:了解Java...

    安卓Android源码——安卓Android 文件操作 列表显示 进入 退出 删除 复制 粘贴 新建文件等等.rar

    这份“安卓Android源码——安卓Android 文件操作 列表显示 进入 退出 删除 复制 粘贴 新建文件等等.rar”资源提供了实现这些功能的源代码示例。下面,我们将详细探讨这些关键知识点。 1. 文件操作: 在Android中,...

Global site tag (gtag.js) - Google Analytics