草庐IT

Synchronized

全部标签

java - 在 lockObject 上同步和使用它作为锁有什么区别?

我知道同步方法和同步块(synchronizedblock)之间的区别,但我不确定同步块(synchronizedblock)部分。假设我有这个代码classTest{privateintx=0;privateObjectlockObject=newObject();publicvoidincBlock(){synchronized(lockObject){x++;}System.out.println("x="+x);}publicvoidincThis(){//sameassynchronizedmethodsynchronized(this){x++;}System.out.pr

java - 在 lockObject 上同步和使用它作为锁有什么区别?

我知道同步方法和同步块(synchronizedblock)之间的区别,但我不确定同步块(synchronizedblock)部分。假设我有这个代码classTest{privateintx=0;privateObjectlockObject=newObject();publicvoidincBlock(){synchronized(lockObject){x++;}System.out.println("x="+x);}publicvoidincThis(){//sameassynchronizedmethodsynchronized(this){x++;}System.out.pr

java - 与 Java 中的 volatile 字段和同步块(synchronized block)的关系——以及它们对非 volatile 变量的影响?

我对线程的概念仍然很陌生,并尝试更多地了解它。最近,我在WhatVolatileMeansinJava上看到了一篇博文。杰里米·曼森(JeremyManson)写道:Whenonethreadwritestoavolatilevariable,andanotherthreadseesthatwrite,thefirstthreadistellingthesecondaboutallofthecontentsofmemoryupuntilitperformedthewritetothatvolatilevariable.[...]allofthememorycontentsseenbyT

java - 与 Java 中的 volatile 字段和同步块(synchronized block)的关系——以及它们对非 volatile 变量的影响?

我对线程的概念仍然很陌生,并尝试更多地了解它。最近,我在WhatVolatileMeansinJava上看到了一篇博文。杰里米·曼森(JeremyManson)写道:Whenonethreadwritestoavolatilevariable,andanotherthreadseesthatwrite,thefirstthreadistellingthesecondaboutallofthecontentsofmemoryupuntilitperformedthewritetothatvolatilevariable.[...]allofthememorycontentsseenbyT

java - 在同一个对象上同步两次?

我想知道在Java中如果我在同一个对象上同步两次是否会出现任何奇怪的行为?场景如下pulbicclassSillyClassName{objectmoo;...publicvoidmethod1(){synchronized(moo){....method2();....}}publicvoidmethod2(){synchronized(moo){doStuff();}}}两种方法都使用对象并在其上同步。第二个方法被第一个方法调用时会因为被锁定而停止吗?我不这么认为,因为它是同一个线程,但我不确定可能会出现任何其他奇怪的结果。 最佳答案

java - 在同一个对象上同步两次?

我想知道在Java中如果我在同一个对象上同步两次是否会出现任何奇怪的行为?场景如下pulbicclassSillyClassName{objectmoo;...publicvoidmethod1(){synchronized(moo){....method2();....}}publicvoidmethod2(){synchronized(moo){doStuff();}}}两种方法都使用对象并在其上同步。第二个方法被第一个方法调用时会因为被锁定而停止吗?我不这么认为,因为它是同一个线程,但我不确定可能会出现任何其他奇怪的结果。 最佳答案

java - HttpSession 线程安全吗,设置/获取属性线程安全操作吗?

另外,被设置的对象是否必须是线程安全的,以保证我们知道存储在session中的对象的状态是什么。另外,我在网上阅读了一些建议使用的内容:synchronized(session){session.setAttribute("abc","abc");}这是一个有效的建议吗? 最佳答案 Servlet2.5规范:Multipleservletsexecutingrequestthreadsmayhaveactiveaccesstothesamesessionobjectatthesametime.Thecontainermustensu

java - HttpSession 线程安全吗,设置/获取属性线程安全操作吗?

另外,被设置的对象是否必须是线程安全的,以保证我们知道存储在session中的对象的状态是什么。另外,我在网上阅读了一些建议使用的内容:synchronized(session){session.setAttribute("abc","abc");}这是一个有效的建议吗? 最佳答案 Servlet2.5规范:Multipleservletsexecutingrequestthreadsmayhaveactiveaccesstothesamesessionobjectatthesametime.Thecontainermustensu

java - getter 和 setter 应该同步吗?

privatedoublevalue;publicsynchronizedvoidsetValue(doublevalue){this.value=value;}publicdoublegetValue(){returnthis.value;}在上面的例子中,让getter同步有什么意义吗? 最佳答案 我认为最好引用JavaConcurrencyinPractice这里:Itisacommonmistaketoassumethatsynchronizationneedstobeusedonlywhenwritingtosharedv

java - getter 和 setter 应该同步吗?

privatedoublevalue;publicsynchronizedvoidsetValue(doublevalue){this.value=value;}publicdoublegetValue(){returnthis.value;}在上面的例子中,让getter同步有什么意义吗? 最佳答案 我认为最好引用JavaConcurrencyinPractice这里:Itisacommonmistaketoassumethatsynchronizationneedstobeusedonlywhenwritingtosharedv