Tag: 线程睡眠

为什么在.NET内部的Hashtable中有一个Thread.Sleep(1)?

最近我正在读.NET Hashtable的实现,遇到了一些我不明白的代码。 部分代码是: int num3 = 0; int num4; do { num4 = this.version; bucket = bucketArray[index]; if (++num3 % 8 == 0) Thread.Sleep(1); } while (this.isWriterInProgress || num4 != this.version); 整个代码在System.Collections.Hashtable (mscorlib版本= 4.0.0.0)的public virtual object this[object key]的public virtual object this[object key] 。 问题是: 在那里有Thread.Sleep(1)的原因是什么?

如何在Swing中创build延迟

我做了一个二十一点的游戏,我希望AI玩家在拿牌之间暂停一下。 我试着简单地使用Thread.sleep(x),但是这会让它冻结,直到AI玩家完成所有的卡片。 我知道Swing不是线程安全的,所以我看了一下Timers,但是我不明白怎样才能使用它。 这是我现在的代码: while (JB.total < 21) { try { Thread.sleep(1000); } catch (InterruptedException ex) { System.out.println("Oh noes!"); } switch (getJBTable(JB.total, JB.aces > 0)) { case 0: JB.hit(); break; case 1: break done; case 2: JB.hit(); JB.bet *= 2; break done; } } 顺便说一句,命中(); 方法更新GUI。