好的家伙们看,这是一个简单的exame,我做了。我试图学习更好的同步,但我在这里有一个问题..几乎所有的时间我都得到我想要的控制台上的结果:
Here they go!...2001ms
Mares eat oats - t1 3001ms
Mares eat oats - t2 4001ms
Does eat oats - t1 5001ms
Does eat oats - t2 6001ms
但有时候不...我得到这样的东西:
Here they go!...2000ms
Mares eat oats - t2 3000ms
Does eat oats - t2 3000ms
Mares eat oats - t1 4000ms
Does eat oats - t1 6001ms
有人可以解释一下吗?也许是因为我有2个核心?我有窗口7 intel corei5
如果你们需要我的代码在这里,它的小,而不是大家伙..
只需要一个好的答案,为什么会这样,感谢很多人! 想要了解这一点,线程同步。 抱歉,我的英文不好,非常感谢。
答案 0 :(得分:1)
为什么要同步这些方法?如果这样做,每次调用一个方法时,整个类都会被线程监视器阻塞(在wait()上)(因为Monitor属于Useless类)。在方法u1和u2中使用synchronize(b) { .... }
。而“b”可能不一定是“静态的”。
请查看此enter link description here以获得更好的解释。
我认为你的问题是因为:
所以试着: