java同步和异步的区别_java中同步与异步的区别是什么?表现在哪里?
上次已经为大家介绍过java多线程的同步与异步,为大家详细分析了这两者的基本概念,今天再来详细的解析一下这两者之间的区别,并且它们的表现也是不同的,一起来了解一下吧。
首先,他们最大的区别是,同步需要等待,而异步无需等待。
举个例子说明一下:
普通B/S模式(同步)AJAX技术(异步)
同步:提交请求->等待服务器处理->处理完毕返回这个期间客户端浏览器不能干别的事。
异步: 请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕。
说的再通俗易懂点,同步是按顺序执行,执行完一个再执行下一个,需要等待、协调运行。异步就是彼此独立,在等待某事件的过程中继续做自己的事,不需要等待这一事件完成后再工作。
线程就是异步实现的一个方式。异步是让调用方法的主线程不需要同步等待另一线程的完成,从而可以让主线程干其它的事情。异步和多线程并不是一个同等关系,异步是最终目的,多线程只是我们实现异步的一种手段。异步是当一个调用请求发送给被调用者,而调用者不用等待其结果的返回而可以做其它的事情。
实现异步可以采用多线程技术或则交给另外的进程来处理。
同步和异步区别:(好处和坏处)
同步可以避免出现死锁,读脏数据的发生。一般共享某一资源的时候用,如果每个人都有修改权限,同时修改一个文件,有可能使一个人读取另一个人已经删除的内容,就会出错。
同步就会按顺序来修改。但是,同步需要等待资源访问结束,浪费时间,效率低。
异步则可以提高效率,现在cpu都是双核,四核,异步处理的话可以同时做多项工作,当然必须保证是可以并发处理的。
但是安全性较低。
同时,需要注意的是,异步是目的,而多线程是实现这个目的的方法。异步是说,A发起一个操作后(一般都是比较耗时的操作,如果不耗时的操作就没有必要异步了),可以继续自顾自的处理它自己的事儿,不用干等着这个耗时操作返回
而线程的适用范围则是那种需要长时间CPU运算的场合,例如耗时较长的图形处理和算法执行。但是往往由于使用线程编程的简单和符合习惯,所以很多朋友往往会使用线程来执行耗时较长的I/O操作。这样在只有少数几个并发操作的时候还无伤大雅,如果需要处理大量的并发操作时就不合适了。
异步与多线程,从辩证关系上来看,异步和多线程并不时一个同等关系,异步是目的,多线程只是我们实现异步的一个手段。
什么是异步:异步是当一个调用请求发送给被调用者,而调用者不用等待其结果的返回.实现异步可以采用多线程技术或则交给另外的进程来处理。
总而言之,同步与异步之间是相辅相成相互合作的关系,这两者可以联系在一起进行理解。java中这种琐碎的知识点还是很多的,也需要大家多费些心思。想要了解更多java基础知识和常见问题,敬请关注奇Q工具网。
推荐阅读:
java同步和异步的区别_java中同步与异步的区别是什么?表现在哪里?相关推荐
- java同步和异步的区别_java中同步与异步区别是什么
一.同步与异步概念:(推荐:java视频教程) 1.同步:所有的操作都做完,才返回给用户.这样用户在线等待的时间太长,给用户一种卡死了的感觉(就是系统迁移中,点击了迁移,界面就不动了,但是程序还在执行 ...
- java null和 的区别_java中null和的区别
null和""的区别 问题一: null和""的区别 String s=null; string.trim()就会抛出为空的exception String s ...
- java final f的区别_Java中final、finally、finalize的简单区别,中等区别,详细区别(Lawliet 修改+注释版)...
简单区别: 中等区别: 虽然这三个单词在Java中都存在,但是并没有太多关联: final:java中的关键字,修饰符. 1.如果一个类被声明为final,就意味着它不能再派生出新的子类,不能作为父类 ...
- java 全局变量 局部变量的区别_java中全局变量和局部变量的区别是什么?
全局变量是编程术语中的一种,源自于变量之分.全局变量既可以是某对象函数创建,也可以是在本程序任何地方创建.全局变量是可以被本程序所有对象或函数引用. 局部变量(Local variables):在方法 ...
- java equals 的区别_java中equals和==的区别是什么-百度经验
在jdk1.5以上的版本中,基本类型和封装类能自动转化,与String类型的对象和字符串常量类似. Integer i1 = 123; Integer i2 = 123 ...
- java 常量和变量 区别_Java常量和变量的区别是什么
今天华清Java学院小编要和大家分享的是Java常量和变量的区别.在使用Java语言进行程序设计时,经常需要用到常量和变量来存储信息.什么是常量?什么是变量?Java常量和变量的区别是什么呢? Jav ...
- java io流区别_Java中IO流的分类和BIO,NIO,AIO的区别
到底什么是IO 我们常说的IO,指的是文件的输入和输出,但是在操作系统层面是如何定义IO的呢?到底什么样的过程可以叫做是一次IO呢? 拿一次磁盘文件读取为例,我们要读取的文件是存储在磁盘上的,我们的目 ...
- java vector实现的接口_java中List接口的实现类 ArrayList,LinkedList,Vector 的区别 list实现类源码分析...
java面试中经常被问到list常用的类以及内部实现机制,平时开发也经常用到list集合类,因此做一个源码级别的分析和比较之间的差异. 首先看一下List接口的的继承关系: list接口继承Colle ...
- Java NIO_I/O基本概念_Java中的缓冲区(Buffer)_通道(Channel)_网络I/O
I/O基本概念 缓冲区基础 缓冲区是I/O的基础, 进程使用read(), write()将数据读出/写入从缓冲区中; 当缓冲区写满, 内核向磁盘发出指令, 将缓冲区中数据写入磁盘中(这一步不需要CP ...
最新文章
- 机器学习小抄,轻松搞定理解机器学习!
- 使用 Bundle在Activity间传递数据
- LAMP部署搭建————重要文件备份
- python dataframe数据类型_python-Pandas DataFrame,1、2、3和NaN值的默认数据类型
- js返回上一页并刷新代码整理 转
- UI- UIView控件知识点回顾
- go语言调用python_Golang中调用Python3
- 杭电2013-蟠桃记(C++)
- “The Stupidity Paradox”作者访谈
- CC2430DMA学习
- 二进制数转整数、整数转二进制数、二进制数求模
- 世界上最流行的开放源代码冲锋枪AK-47
- 【机器学习】Radius Neighbors Classifier(rNN,radius nearest neighbors)
- 19张地图掀翻脑洞 还等什么快上车
- Java 8新特性探究(四)深入解析日期和时间-JSR310
- Flutter 解决软键盘弹出背景图片变形
- 电商项目之购物车设计
- 4~20mA电流输出芯片XTR111完整电路
- Jmeter将响应结果导出到文件
- CTFHub | UA注入