草庐IT

Java:从同步块(synchronized block)启动新线程时会发生什么?

这里的第一个问题:这是我不知道的Java中一个非常简短但基本的东西......在下面的例子中,run()方法是否以某种方式执行了somemethod()获得的锁?publicsynchronizedvoidsomemethod(){Threadt=newThread(newRunnable(){voidrun(){... 最佳答案 没有。run()在其自己的上下文中同步启动。它不持有任何锁。如果是这样,您要么会遇到死锁,要么会违反规定在任何给定时间只有一个线程可以持有对象锁的规范。如果run()对同一个对象再次调用somemetho

java - 异常处理回滚 Action 是否在异常发生前完成?

假设我有一个这样的方法voidmyMethod(MyThingt)throwsMyException{t.foo="bar";if(t.condition()){thrownewMyException();}}如果异常被触发,t.foo的值是否恢复到之前的值?还是保持“bar”值? 最佳答案 MyThing对象上的foo属性的值不会因任何异常而恢复。在您的示例中,没有tryblock,但如果有的话,您可以在相应的catchblock中执行您自己类型的值回滚。try{t.foo="bar";doSomethingRiskyWhichM

java - 抑制捕获或抛出永远不会发生的异常?

假设我在方法中有以下行:StringencodedString=URLEncoder.encode(foo,"utf-8");此方法抛出一个UnsupportedEncodingException。哪个更好:/**@throwsUnsupportedEncodingExceptionumm...never*/publicvoidmyMethod()throwsUnsupportedEncodingException{...StringencodedString=URLEncoder.encode(foo,"utf-8");...}(强制调用者自己捕捉)或者:publicvoidmyMe

Java:不可能的 NullPointerException 怎么还会发生?

我刚刚收到我们软件的以下错误报告:java.lang.NullPointerExceptionatjava.util.Arrays.equals(UnknownSource)atour.app.OurMain(OurMain.java:13)Windows上的JRE1.7.0_45会发生这种情况,Arrays.equals的相应源代码是:publicstaticbooleanequals(byte[]a,byte[]a2){if(a==a2)returntrue;if(a==null||a2==null)returnfalse;intlength=a.length;if(a2.leng

java - 如果有另一个具有手动设置属性的同一类的 bean,则不会发生 Autowiring

我想通过xml配置文件创建两个相同类的bean。该类有一个带注释的setter将由spring填充。在其中一个bean定义中,我还手动提供值以覆盖注释中的一个。但是当我这样做时,spring不再处理注释连接。这是演示此效果的最小代码,使用了@Value为简单起见,但它与@Autowired相同:importorg.springframework.beans.factory.annotation.Value;importjavax.annotation.PostConstruct;publicclassAutowireTest{publicStringtestField;@PostCon

java - 程序顺序规则在构造函数中起作用之前是否发生?

是否真的可以在构造函数中创建的线程中查看部分构造的对象,因为缺少同步和泄漏this实例?当然,有子类的情况除外,或者我们正在使用克隆或类似的东西进行隐式构造-所以我们假设该类是final并且它是否已完全初始化在调用其他线程之前调用构造函数的线程中。据我所知,以下hb()规则适用,线程中的每个Action先于该线程中的每个Action在程序顺序(ProgramOrderRule)中靠后的顺序线程上对start()的调用发生在已启动线程中的任何操作之前。如果hb(x,y)和hb(y,z),则hb(x,z)那么这是否意味着以下代码在技术上是线程安全的(我从类似的问题Whyshouldn'tI

java - JarSigner - 到期后会发生什么

如果我创建一个keystore并使用以下命令签署一个jar:keytool-genkey-aliasmyalias-keyalgRSA-validity365-keystorekeys/my.keystorejarsigner-verbose-keystorekeys/my.keystore-signedjarmy_signed.jarmy_unsigned.jarmyalias然后我会生成一个有效期为365天的证书。365天后jar文件会发生什么变化?它还可以运行吗?当他使用“jarsignerverify”时,有人还能得到它的签名者吗?如何更新证书? 最

java - 如果不回滚 Hibernate 中的事务会发生什么?

我读到的关于Hibernate的所有内容都指出,当发生错误时,您必须回滚事务并关闭session,并且以下代码(取自Hibernate的文档)通常有一些变体作为示例:Sessionsess=factory.openSession();Transactiontx=null;try{tx=sess.beginTransaction();//dosomework...tx.commit();}catch(RuntimeExceptione){if(tx!=null)tx.rollback();throwe;//ordisplayerrormessage}finally{sess.close(

java - 在 Java 中调用方法后会发生什么

这看起来是个愚蠢的问题,但我发现很难答对。我问过不同的人,但得不到理想的答案。我想知道我们在Java中调用一个普通方法后会发生什么(在单线程环境中提供)。我的理解是:弹出所有当前堆栈变量并存储在某处(哪里?)当前方法调用暂停新调用方法的参数入栈方法代码运行方法运行结束后,堆栈再次清空,旧堆栈内容再次恢复。(如果函数返回一个值会发生什么?)。代码继续调用方法。这是一个非常不完整且可能是错误的答案。有人可以提供更详细的描述吗?非常感谢。 最佳答案 不,这实际上相当准确:1)当前栈变量留在栈中2)当前方法暂停3)新调用方法的参数入栈4)方

java - : "Updating Maven Project". org.eclipse.m2e.wtp.WTPProjectsUtil.isM2eWtpDisabled 期间发生内部错误

我将eclipsekepler与mavenv4.0.0和jboss7.0以及JDK1.6一起使用。我收到以下错误:java.lang.NoSuchMethodError:org.eclipse.m2e.wtp.WTPProjectsUtil.isM2eWtpDisabled(Lorg/eclipse/m2e/core/project/IMavenProjectFacade;Lorg/eclipse/core/runtime/IProgressMonitor;)Zatorg.eclipse.m2e.wtp.jaxrs.internal.configurators.JaxRsProject