java中啥同步啥是异步分别用在啥地方

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中啥同步啥是异步分别用在啥地方相关的知识,希望对你有一定的参考价值。

java中什么同步什么是异步分别用在什么地方
上传下载文件要用什么步

java同步指的是synchronized机制,而非synchronized的都是异步,弄懂同步的概念就大致明白了两者的差别。

有关同步:
synchronized用来修饰一个方法或者一个代码块,它用来保证在同一时刻最多只有一个线程执行该段代码。
一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。
二、然而,当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块。
三、尤其关键的是,当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所有其它synchronized(this)同步代码块的访问将被阻塞。
四、第三个例子同样适用其它同步代码块。也就是说,当一个线程访问object的一个synchronized(this)同步代码块时,它就获得了这个object的对象锁。结果,其它线程对该object对象所有同步代码部分的访问都被暂时阻塞。
五、以上规则对其它对象锁同样适用。

示例代码:
public class Thread1 implements Runnable
public void run()
synchronized(this)
for (int i = 0; i < 5; i++)
System.out.println(Thread.currentThread().getName() + " synchronized loop " + i);



public static void main(String[] args)
Thread1 t1 = new Thread1();
Thread ta = new Thread(t1, "A");
Thread tb = new Thread(t1, "B");
ta.start();
tb.start();


结果:
A synchronized loop 0
A synchronized loop 1
A synchronized loop 2
A synchronized loop 3
A synchronized loop 4
B synchronized loop 0
B synchronized loop 1
B synchronized loop 2
B synchronized loop 3
B synchronized loop 4
参考技术A 同步可以用在多个子线程访问同一个数据库表时,这是要保证数据的一致性和完整性,在数据访问层就要加同步锁啦,不加锁可能就会报数据库被锁的异常;异步一般用在耗时的操作中,比如:联网取数据,这个数据量比较大,很要点时间,而我在取数据时又想继续做别的事情,等我把别的事情做完在来处理联网得到的数据。异步操作就等于帮你节约了一些时间。 参考技术B 深入的不太懂,但是大概粗浅一点我说下我的理解。
后台查询完成之后返回到前台:可以理解为同步,页面上的数据是一起刷新的。
异步:比如说我们提交什么东西的时候,验证身份证是否合法,我们可以用ajax异步进行验证、
就是不用刷新整个页面,直接从后台拿数据到前台。页面不用重新加载数据。

上传文件可以用,不过有一个上传文件的小插件非常好用。好像是jquery-fiel就是一个jquery的上传插件用的ajax实现追问

syncronize是什么怎么用

追答

单例吧

感觉和感受怎样解释?两者有啥区别,分别用在啥情况下?

参考技术A

感觉和感受怎样解释?两者有什么区别,分别用在什么情况下?

呵呵,其实很简单,感觉是在事发之前,一般用在对事或对物的直观印象或预感;感受是在事发之后,对事或对物的评价或感触!希望对你有帮助!

担任、担当、当选三词有什么区别?分别用在什么情况下?

我觉得三个次意思接近,都是负责某些职责,我认为不同的在于“担任”的职责比较普通,随便一个职责都可以用担任;“担当”的职责比较有责任性,有专门负责某些原则性职责的意思,如销售经理啊这种,另外,“担当”还可以用作名字,比如这个人有“担当”,又或者“营业担当”(小日本的职位,中国翻译过来是这样);“当选”的职责一般比较有荣誉性,比如大家推选出的一些职位,人大代表啊什么的。

QT中LineEdit TextEdit PlainTextEdit 这三个控制元件有什么区别,分别用在什么情况下呢。

QLineEdit是单行文字输入,一般用于使用者名称、密码等少量文字互动地方。
QTextEdit用于多行文字,也可以显示HTML格式文字。
QPlainTextEdit与QTextEdit很像,但它多用于需要与文字进行处理的地方,而QTextEdit多用于显示,可以说,QPlainTextEdit对于plain text处理能力比QTextEdit强。

in,on,at区别与用法,分别用在什么情况下

表时间,in 年月 on 日 at 点
表地点 in 街道 ,on 街区 at 几号

Speak ,和say 有什么区别?分别在什么情况下怎么使用?

▲ say一般作及物动词用,着重说话的内容,Please say it in English. 请用英语用。
▲ speak强调说的动作,不强调所说的内容 Can you speak Japanese? 你会说日语吗?

love 和loves有什么区别,loves 一般用在什么情况下

love 当动词用时,+s 是修饰第三人称单数的用法,不+s就是原型了。可以直接用,最简单的 eg:I love she,but she loves him.
love 当名词用时,就是单复数的差别了,单数用love,复数用loves

to-day 和 today 有什么区别?分别在什么情况下使用?

你确定前面那个不是day-to-day?如果不是,那么这两个是一个词

Handlebars 和angularjs有什么区别?分别在什么情况下使用

1、Handlebars是一个Javascript模板引擎只是一个类库
2、angularjs是一个Javascript框架

日食和月食有什么区别?两者在什么情况下形成?

月相
Moon,phases of
因月球靠反射阳光发亮,它与太阳相对位置不同(黄经差),便会呈现出各种形状。如图所示,在位置a,日月黄经差为0°,即称朔或新月,这时月球以黑暗面对向地球,且与太阳几乎同时出没,故地面上无法见到;c时黄经差90°称上弦,半月形出现在上半夜的西边 夜空中;e时黄经差180°,即是望或称满月,一轮明月整夜可见;g为下弦,黄经差270°,这时的半月只在下半夜出现于东半天空中。朔望盈亏的周期称朔望月,长约29.53059日。
月相是日月黄经差度数(以下的度数就是日月黄经差值)来算的,共划分八种:
新月(农历初一日,即朔日):0度;
上峨嵋月(一般为农历的初二夜左右-------初七日左右):0度----90度;
上弦(农历初八左右):90度;
凸月(农历初九左右-----农历十四左右):90度----180度;
满月(望日,农历十五日夜或十六日左右):180度;
残月(农历十六左右-----农历二十三左右):180度----270度;
下弦(农历二十三左右):270度;
下峨嵋月(农历二十四左右----月末):270度-----360度;
另外,农历月最后一天称为晦日,即不见月亮;
以上有四种为主要月相为:新月(农历初一日),上弦(农历初八左右),满月(农历十五日左右),下弦(农历二十三左右),它们都有明确的发生时刻,是经过精密的轨道计算得出的;
如何识别月相
假设满月是一个圆形,那么无论月相如何变化,它的上下两个顶点的连线都一定是这个圆形的直径(月食的时候月相是不规则的)。当我们看到的月相外边缘是接近C字母形状时,那么这时的月相则是农历十五日以前的月相,相反,当我们看到的月相外边缘是接近反C字母形状时,那么这时的月相则是农历十五日以后的月相。
歌诀:月相变化歌
初一新月不可见,只缘身陷日地中。
初七初八上弦月,半轮圆月面朝西。
满月出在十五六,地球一肩挑日月。
二十二三下弦月,月面朝东下半夜。
日食是月球绕地球转到太阳和地球中间时,如果太阳、月球、地球三者正好排成或接近一条直线,月球挡住了射到地球上去的太阳光,月球身后的黑影正好落到地球上,这时发生日食现象。在地球上月影里的人们开始看到阳光逐渐减弱,太阳面被圆的黑影遮住,天色转暗,全部遮住时,天空中可以看到最亮的恒星和行星,几分钟后,从月球黑影边缘逐渐露出阳光,开始生光、复圆。由于月球比地球小,只有在月影中的人们才能看到日食。月球把太阳全部挡住时发生日全食,遮住一部分时发生日偏食,遮住太阳中央部分发生日环食。发生日全食的延续时间不超过7分31秒。日环食的最长时间是12分24秒。我国有世界上最古老的日食记录,公元前一千多年已有确切的日食记录。
日食、月食是光在天体中沿直线传播的典型例证。月亮执行到太阳和地球中间并不是每次都发生日食,发生日食需要满足两个条件。其一,日食总是发生在朔日(农历初一)。也不是所有朔日必定发生日食,因为月球执行的轨道(白道)和太阳执行的轨道(黄道)并不在一个平面上。白道平面和黄道平面有5°9′的夹角。如果在朔日,太阳和月球都移到白道和黄道的交点附近,太阳离交点处有一定的角度(日食限),就能发生日食,这是要满足的第二个条件。
由于月球、地球执行的轨道都不是正圆,日、月同地球之间的距离时近时远,所以太阳光被月球遮蔽形成的影子,在地球上可分成本影、伪本影(月球距地球较远时形成的)和半影。观测者处于本影范围内可看到日全食;在伪本影范围内可看到日环食;而在半影范围内只能看到日偏食。
日全食发生时,根据月球圆面同太阳圆面的位置关系,可分成五种食象:1.初亏。月球比太阳的视运动走得快。日食时月球追上太阳。月球东边缘刚刚同太阳西边缘相“接触”时叫做初亏,是第一次“外切”,是日食的开始;2.食既。初亏后大约一小时,月球的东边缘和太阳的东边缘相“内切”的时刻叫做食既,是日全食的开始,这时月球把整个太阳都遮住了;3.食甚。是太阳被食最深的时刻,月球中心移到同太阳中心最近;4.生光。月球西边缘和太阳西边缘相“内切”的时刻叫生光,是日全食的结束;从食既到生光一般只有二三分钟,最长不超过七分半钟;5.复圆。生光后大约一小时,月球西边缘和太阳东边缘相“接触”时叫做复圆,从这时起月球完全“脱离”太阳,日食结束。
月球表面有许多高山,月球边缘是不整齐的。在食既或者生光到来的瞬间月球边缘的山谷未能完全遮住太阳时,未遮住部分形成一个发光区,像一颗晶莹的“钻石”;周围淡红色的光圈构成钻戒的“指环”,整体看来,很像一枚镶嵌著璀璨宝石的钻戒。有时形成许多特别明亮的光线或光点,好像在太阳周围镶嵌一串珍珠,称作倍利珠(倍利是法国天文学家)。
无论是日偏食、日全食或日环食,时间都是很短的。在地球上能够看到日食的地区也很有限,这是因为月球比较小,它的本影也比较小而短,因而本影在地球上扫过的范围不广,时间不长,由于月球本影的平均长度(373293公里)小于月球与地球之间的平均距离 (384400公里),就整个地球而方,日环食发生的次数多于日全食。

target to 与target at有什么区别,分别在什么情况下使用

    target:触发事件的元素。 currentTarget:事件系结的元素。 两者在没有冒泡的情况下,是一样的值,但在用了事件委托的情况下,就不一样了,例如: fsda ewre qewe xvc 134 document.getElementById(“ulT”)。

    例句:He made it his object in life to find the island.他把找到那座岛屿当成自己的人生目标。

    target 一般只是是方向性的指示,比如射击时瞄准,目标客户群体。objective 可指想达到的指标、任务等;比如年度任务目标,长期方针,这种情况下一般不用 target,只用objective,但 objective 有时也可像 target 一样使用。

    objective与object基本同义,但语义更广泛,指具体或很快能达到的目的,也可指军事目标。书面用词。

以上是关于java中啥同步啥是异步分别用在啥地方的主要内容,如果未能解决你的问题,请参考以下文章

Java 中啥是快速、等待通知或忙等待?

labview中啥是严格类型VI,怎样创建严格类型VI

QT中LineEdit TextEdit PlainTextEdit 这三个控件有啥区别,分别用在啥情况下呢。

python 啥是http异步请求

ajax与jQuery的异步提交,他在啥情况下会走error

Java中啥是适配器模式及其作用是啥??