Java 中 wait 与 notify 的简单操作

在我知道wait() 与 notify() 以前,我常常用一种看似很 low 的方式控制线程同步

1
2
3
while(condition) {
return ;
}

实际上这个线程是一直在运行的,并没有操作系统概念中的阻塞(Block)。而要实现阻塞(Block)则要借助 Java 线程中的 wait() 操作 与 notify() 操作。

simulation of langton's ant

Introduction to Langton’s Ant

简单来说 Langton’s ant 就是一个简单的数学游戏.

在一平面上,存在无限的等大小的正方形方格,每一个方格要么是白色,要么是黑色. 我们在某一个上放了一只蚂蚁(Ant). 这只蚂蚁每一步可以朝四个方向行走,并且每步行走遵从以下两条规则:

  • 如果蚂蚁在色格子时,就会向转90°,同时颠倒该格子的颜色(变为黑色),最后再向前走一步。
  • 如果蚂蚁在色格子时,就会向转90°,同时颠倒该格子的颜色(变为白色),最后再向前走一步。