/** show 消费进程. */
 public void run() {
   for (int i = 0; i < 20; i++) {
     Mantou m = ss.pop();
     //          System.out.println("消费了:---------" + m + " 共" + ss.index + "个馒头");
     //  同上  在上面一行进行测试也是不妥的,对index的访问应该在原子操作里,因为可能在pop之后此输出之前又生产了,会产生输出混乱
     try {
       Thread.sleep((int) (Math.random() * 1000));
     } catch (InterruptedException e) {
       e.printStackTrace();
     }
   }
 }
 /** show 生产进程. */
 public void run() {
   for (int i = 0; i < 20; i++) {
     Mantou m = new Mantou(i);
     ss.push(m);
     //          System.out.println("生产了:" + m + " 共" + ss.index + "个馒头");
     //          在上面一行进行测试是不妥的,对index的访问应该在原子操作里,因为可能在push之后此输出之前又消费了,会产生输出混乱
     try {
       Thread.sleep((int) (Math.random() * 500));
     } catch (InterruptedException e) {
       e.printStackTrace();
     }
   }
 }