同步和异步的区别、同步与阻塞的关系

  • 同步

要想实现同步操作,必须要获得线程的对象锁。获得它可以保证在同一时刻只有一个线能够进入临界区,并且在这个锁被释放之前,其他的线程都不能再进入这个临界区。如果其他线程想要获得这个对象的锁,只能进入等待队列等待。只有当拥有该对象锁的线程退出临界区时,锁才会被释放,等待队列中优先级最高的线程才能获得该锁。

实现同步的方式有两种:同步方法、同步代码块。

  • 异步

由于每个线程都包含了运行时自身所需要的数据或方法,因此,在进行输入输出时,不必关系其他线程的状态或行为,也不必等到输入输出处理完毕才返回。当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,异步能够提高程序的效率。

  • 同步与阻塞

 同步是个过程,阻塞是线程的一种状态。多个线程操作共享变量时可能会出现竞争。这时需要同步来防止两个以上的线程同时进入临界区,在这个过程中,后进入临界区的线程将阻塞,等待先进入的线程走出临界区。

  • 线程同步一定发生阻塞吗?

线程同步不一定发生阻塞!!!线程同步的时候,需要协调推进速度,互相等待和互相唤醒会发生阻塞。

时间: 2024-12-31 03:10:39

同步和异步的区别、同步与阻塞的关系的相关文章

同步和异步的区别(转)

答案一:1.异步传输 通常,异步传输是以字符为传输单位,每个字符都要附加 1 位起始位和 1 位停止位,以标记一个字符的开始和结束,并以此实现数据传输同步.所谓异步传输是指字符与字符(一个字符结束到下一个字符开始)之间的时间间隔是可变的,并不需要严格地限制它们的时间关系.起始位对应于二进制值 0,以低电平表示,占用 1 位宽度.停止位对应于二进制值 1,以高电平表示,占用 1~2 位宽度.一个字符占用 5~8位,具体取决于数据所采用的字符集.例如,电报码字符为 5 位.ASCII码字符为 7 位

ajax同步与异步的区别

jquery中ajax方法有个属性async用于控制同步和异步,默认是true,即ajax请求默认是异步请求,有时项目中会用到AJAX同步.这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出现假死状态,当这个AJAX执行完毕后才会继续运行其他代码页面假死状态解除.而异步则这个AJAX代码运行中的时候其他代码一样可以运行. ajax中async这个属性,用于控制请求数据的方式,默认是true,即默认以异步的方式请求数据. 一.async值为true (异步) 当

Ajax 是什么?Ajax 的交互模型?同步和异步的区别?如何解决跨域问题

Ajax 是什么: 1. 通过异步模式,提升了用户体验 2. 优化了浏览器和服务器之间的传输,减少不必要的数据往返,减少了带宽占用 3. Ajax 在客户端运行,承担了一部分本来由服务器承担的工作,减少了大用户量下的服务器负载. Ajax 的最大的特点: 1. Ajax可以实现动态不刷新(局部刷新) 2. readyState 属性 状态 有5个可取值: 0 = 未初始化,1 = 启动, 2 = 发送,3 = 接收,4 = 完成 Ajax 同步和异步的区别: 1. 同步:提交请求 -> 等待服务

Web请求中同步与异步的区别

普通的B/S模式就是同步,而AJAX技术就是异步,当然XMLHttpReques有同步的选项. 同步:提交请求->等待服务器处理->处理完毕返回.这个期间客户端浏览器不能干任何事. 异步: 请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕. 举个生动的例子吧: 同步就是你叫我去吃饭,我听到了就和你去吃饭:如果没有听到,你就不停的叫,直到我告诉你听到了,才一起去吃饭. 异步就是你叫我,然后自己去吃饭,我得到消息后可能立即走,也可能等到下班才去吃饭. 所以,要

AJAX中同步和异步的区别和使用场景

在Jquery中ajax方法中async用于控制同步和异步,当async值为true时是异步请求,当async值为fase时是同步请求.ajax中async这个属性,用于控制请求数据的方式,默认是true,即默认以异步的方式请求数据. jquery中ajax方法有个属性async用于控制同步和异步,默认是true,即ajax请求默认是异步请求,有时项目中会用到AJAX同步.这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出现假死状态,当这个AJAX执行完毕后才

同步与异步的区别

同步和异步的概念,同步是发送方发送消息后,需要等到接收方的回应,才会继续执行下去:而异步则是发送方在发送消息后,就会继续执行,而不管接收方是否回复消息. 当多线程访问资源时,需要保证在某个时刻只能被一个线程访问,这时需要使用同步,也就是对数据进行同步,其他线程必须等待,比如银行的转账系统,对数据库的保存操作等等,都是同步 为了避免短时间大量的数据库操作,就使用缓存机制,也就是消息队列.先将数据放入消息队列,然后再慢慢写入数据库.引入消息队列机制,虽然可以保证用户请求的快速响应,但是并没有使得我数

javascript同步和异步的区别与实现方式

题外话: “我最不喜欢的编程语言”排行榜第一名除了javascript别无他选 可惜的是在mobi项目的三个月除了javascript和SP就没写过其他什么.. 所以,迎难而上,该解决的一定要解决了 ------------------------------------------------------------------------------------------------------------------- javascript语言是单线程机制.所谓单线程就是按次序执行,执行

同步和异步的区别和联系以及一般在什么情况下使用它们

对于同步和异步而言,是所有程序员都应该的掌握的基本内容.由于同步和异步设计的知识面比较多,这里我仅仅进行一下简单的讲解. 其根本目的在于理解同步和异步的含义以及应用.至于更详细的信息可以上网查阅相关资料. 首先如果数据在线程间共享的话,那么就需要涉及到同步相关的内容了.例如正在写的数据可能被另外一个线程读到,而正在读的数据 可能被另外一个线程写到,这些数据是共享的数据.这时就必须进行同步存取操作,否者前后读取的数据就有可能不一致. 再存钱为例: 有一个共享的银行账号110,原来里面有余额1000

阻塞、非阻塞与同步、异步的区别

在知乎中看到的解释很好. “阻塞”与"非阻塞"与"同步"与“异步"不能简单的从字面理解,提供一个从分布式系统角度的回答.1.同步与异步同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication)所谓同步,就是在发出一个*调用*时,在没有得到结果之前,该*调用*就不返回.但是一旦调用返回,就得到返回值了.换句话说,就是由*调用者*主动等待这个*调用*的结果. 而异步则是相反,*