为什么这个多线程代码坏了?

Xin*_*nus 0 java multithreading

为什么以下多线程相关示例代码被破坏?

public void method1(){
    synchronized(intVariable){
    }
    synchronized(stringVariable){
    }
}

public void method2(){
    synchronized(stringVariable){
     }
    synchronized(intVariable){
     }
}
Run Code Online (Sandbox Code Playgroud)

以上两个方法来自同一个类,其中stringVariable和intVariable是实例变量.

我认为这不会导致任何问题,至少与Thread死锁有关.还有其他原因导致此代码被破坏吗?

Pet*_*rey 9

你不明白这个问题,或者你是对的,这不会导致死锁.

也许他正在寻找更加模糊的东西,

  • 你不能锁定一个int领域.
  • 锁定一个String对象是一个非常糟糕的主意,因为你不知道它是如何共享的.

但我对此表示怀疑.在任何情况下,他都应该澄清问题和你的答案,因为也许他可能已经学会了一些东西,如果只是如何让问题在下次更清楚.

如果您作为面试官,有一套筛选问题,您应该确保在您引入候选人之前已经涵盖了这些问题.向HR或代理人提供的调查问卷可能很有用.电话采访往往是一个很好的第一集.作为候选人,我有时会要求接受电话采访,只是为了看看我是否值得花时间去面对面.(例如,如果我怀疑它的价值)

你不仅试图说服他们你很适合他们,而且他们试图说服你他们适合你.看起来他们在技术上都没有向你解释这个问题,以及他们如何处理HR问题,所以我认为你很幸运,你不再浪费时间.

顺便说一句:大多数大公司都是多元化的,为一个团队工作可能与另一个团队非常不同.基于一种经验来描述公司的特征是不公平的.