上次已经为大家介绍过java多线程的同步与异步,为大家详细分析了这两者的基本概念,今天再来详细的解析一下这两者之间的区别,并且它们的表现也是不同的,一起来了解一下吧。

首先,他们最大的区别是,同步需要等待,而异步无需等待。

举个例子说明一下:

普通B/S模式(同步)AJAX技术(异步)

同步:提交请求->等待服务器处理->处理完毕返回这个期间客户端浏览器不能干别的事。

异步: 请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕。

说的再通俗易懂点,同步是按顺序执行,执行完一个再执行下一个,需要等待、协调运行。异步就是彼此独立,在等待某事件的过程中继续做自己的事,不需要等待这一事件完成后再工作。

线程就是异步实现的一个方式。异步是让调用方法的主线程不需要同步等待另一线程的完成,从而可以让主线程干其它的事情。异步和多线程并不是一个同等关系,异步是最终目的,多线程只是我们实现异步的一种手段。异步是当一个调用请求发送给被调用者,而调用者不用等待其结果的返回而可以做其它的事情。

实现异步可以采用多线程技术或则交给另外的进程来处理。

同步和异步区别:(好处和坏处)

同步可以避免出现死锁,读脏数据的发生。一般共享某一资源的时候用,如果每个人都有修改权限,同时修改一个文件,有可能使一个人读取另一个人已经删除的内容,就会出错。

同步就会按顺序来修改。但是,同步需要等待资源访问结束,浪费时间,效率低。

异步则可以提高效率,现在cpu都是双核,四核,异步处理的话可以同时做多项工作,当然必须保证是可以并发处理的。

但是安全性较低。

同时,需要注意的是,异步是目的,而多线程是实现这个目的的方法。异步是说,A发起一个操作后(一般都是比较耗时的操作,如果不耗时的操作就没有必要异步了),可以继续自顾自的处理它自己的事儿,不用干等着这个耗时操作返回

而线程的适用范围则是那种需要长时间CPU运算的场合,例如耗时较长的图形处理和算法执行。但是往往由于使用线程编程的简单和符合习惯,所以很多朋友往往会使用线程来执行耗时较长的I/O操作。这样在只有少数几个并发操作的时候还无伤大雅,如果需要处理大量的并发操作时就不合适了。

异步与多线程,从辩证关系上来看,异步和多线程并不时一个同等关系,异步是目的,多线程只是我们实现异步的一个手段。

什么是异步:异步是当一个调用请求发送给被调用者,而调用者不用等待其结果的返回.实现异步可以采用多线程技术或则交给另外的进程来处理。

总而言之,同步与异步之间是相辅相成相互合作的关系,这两者可以联系在一起进行理解。java中这种琐碎的知识点还是很多的,也需要大家多费些心思。想要了解更多java基础知识和常见问题,敬请关注奇Q工具网。

推荐阅读:

java同步和异步的区别_java中同步与异步的区别是什么?表现在哪里?相关推荐

  1. java同步和异步的区别_java中同步与异步区别是什么

    一.同步与异步概念:(推荐:java视频教程) 1.同步:所有的操作都做完,才返回给用户.这样用户在线等待的时间太长,给用户一种卡死了的感觉(就是系统迁移中,点击了迁移,界面就不动了,但是程序还在执行 ...

  2. java null和 的区别_java中null和的区别

    null和""的区别 问题一: null和""的区别 String s=null; string.trim()就会抛出为空的exception String s ...

  3. java final f的区别_Java中final、finally、finalize的简单区别,中等区别,详细区别(Lawliet 修改+注释版)...

    简单区别: 中等区别: 虽然这三个单词在Java中都存在,但是并没有太多关联: final:java中的关键字,修饰符. 1.如果一个类被声明为final,就意味着它不能再派生出新的子类,不能作为父类 ...

  4. java 全局变量 局部变量的区别_java中全局变量和局部变量的区别是什么?

    全局变量是编程术语中的一种,源自于变量之分.全局变量既可以是某对象函数创建,也可以是在本程序任何地方创建.全局变量是可以被本程序所有对象或函数引用. 局部变量(Local variables):在方法 ...

  5. java equals 的区别_java中equals和==的区别是什么-百度经验

    在jdk1.5以上的版本中,基本类型和封装类能自动转化,与String类型的对象和字符串常量类似. Integer i1 = 123;        Integer i2 = 123          ...

  6. java 常量和变量 区别_Java常量和变量的区别是什么

    今天华清Java学院小编要和大家分享的是Java常量和变量的区别.在使用Java语言进行程序设计时,经常需要用到常量和变量来存储信息.什么是常量?什么是变量?Java常量和变量的区别是什么呢? Jav ...

  7. java io流区别_Java中IO流的分类和BIO,NIO,AIO的区别

    到底什么是IO 我们常说的IO,指的是文件的输入和输出,但是在操作系统层面是如何定义IO的呢?到底什么样的过程可以叫做是一次IO呢? 拿一次磁盘文件读取为例,我们要读取的文件是存储在磁盘上的,我们的目 ...

  8. java vector实现的接口_java中List接口的实现类 ArrayList,LinkedList,Vector 的区别 list实现类源码分析...

    java面试中经常被问到list常用的类以及内部实现机制,平时开发也经常用到list集合类,因此做一个源码级别的分析和比较之间的差异. 首先看一下List接口的的继承关系: list接口继承Colle ...

  9. Java NIO_I/O基本概念_Java中的缓冲区(Buffer)_通道(Channel)_网络I/O

    I/O基本概念 缓冲区基础 缓冲区是I/O的基础, 进程使用read(), write()将数据读出/写入从缓冲区中; 当缓冲区写满, 内核向磁盘发出指令, 将缓冲区中数据写入磁盘中(这一步不需要CP ...

最新文章

  1. 机器学习小抄,轻松搞定理解机器学习!
  2. 使用 Bundle在Activity间传递数据
  3. LAMP部署搭建————重要文件备份
  4. python dataframe数据类型_python-Pandas DataFrame,1、2、3和NaN值的默认数据类型
  5. js返回上一页并刷新代码整理 转
  6. UI- UIView控件知识点回顾
  7. go语言调用python_Golang中调用Python3
  8. 杭电2013-蟠桃记(C++)
  9. “The Stupidity Paradox”作者访谈
  10. CC2430DMA学习
  11. 二进制数转整数、整数转二进制数、二进制数求模
  12. 世界上最流行的开放源代码冲锋枪AK-47
  13. 【机器学习】Radius Neighbors Classifier(rNN,radius nearest neighbors)
  14. 19张地图掀翻脑洞 还等什么快上车
  15. Java 8新特性探究(四)深入解析日期和时间-JSR310
  16. Flutter 解决软键盘弹出背景图片变形
  17. 电商项目之购物车设计
  18. 4~20mA电流输出芯片XTR111完整电路
  19. Jmeter将响应结果导出到文件
  20. CTFHub | UA注入

热门文章

  1. EXCEL 将列内容,逆序粘贴
  2. python 消除二值图像中面积小于某个阈值的连通域(消除孤立点)
  3. SQL Server2017配置允许远程连接
  4. android 日记项目报告,Android开源项目-小熊日记
  5. shell脚本动画小工具
  6. 自媒体平台操作手册,自媒体平台算法操作技巧详解
  7. 创业公司打造顶级团队的七个方法
  8. 机器人运动控制-上位机通讯
  9. Android国际化-图片国际化和文本字符国际化
  10. IM模块-声音麦克风监控波动