下载地址 http://www.shengzhen.com.cn/javadiamonds/
 
  游戏中的所有的正在下落的形状都从该类继承
  package javablock.model; 
public class SuspensibleThread     extends Thread {     private volatile boolean runing = true;     private volatile boolean pause = false;     public SuspensibleThread() {     } 
    //run方法不可再被继承了     final public void run() {         try {             while (runing) {                 //当线程被暂停时 将会进入runing的循环检测中,                 //这时有必要使用yield给于其他线程调用continueThread的机会                 this.yield();                 //如果没有sleep(10)此while循环会占用大量cpu时间                 Thread.sleep(10);                 while (!pause && runing) {                     runTask();//注意runtask要实现线程安全                 }                 if (!pause && runing) {                     //synchronized (this)是必须的                     synchronized (this) {                         this.wait();                     }                 }                 if (!runing) {                     break;                 }             }         }         catch (InterruptedException ex) {             runing = false;         }     } 
    /**在继承runTask方法中应该有sleep方法      * */     public void runTask() throws InterruptedException {         Thread.sleep(1);     } 
    //暂停     public synchronized void pauseThread() {         pause = true; 
    } 
    //继续     public synchronized void continueThread() {         pause = false;         notify();     } 
    //中止线程     public synchronized void endThread() {         pause = true;         runing = false;         interrupt();     } 
    //重启线程     public synchronized void restart() {         runing = true;         pause = false;         this.start();     } 
    public boolean isThreadPause() {         return pause;     } 
    public boolean isThreadRunnig() {         return runing;     } }  
 
  |