黑马程序员技术交流社区

标题: 关于多线程的问题 [打印本页]

作者: g552092947    时间: 2015-7-2 11:35
标题: 关于多线程的问题
为什么这段程序执行后CPU的占用率就特别高呢    到90%多
  1. package com.heima.thread;
  2. /**
  3. * 需求:简单的卖票程序,模拟4个线程同时卖100张票。多窗口同时卖票
  4. * @author Administrator
  5. *
  6. */
  7. class Ticket extends Thread{
  8.         private int ticket=100;
  9.         public void run()
  10.         {
  11.                 while(true)
  12.                 {
  13.                         if(ticket>0)
  14.                         {
  15.                                 System.out.println(this.getName()+"…………"+ticket--);
  16.                         }
  17.                 }
  18.         }
  19. }
  20. public class ThreadTicket {

  21.         /**
  22.          * @param args
  23.          */
  24.         public static void main(String[] args) {
  25.                 // TODO Auto-generated method stub
  26.                 Ticket t1=new Ticket();
  27.                 Ticket t2=new Ticket();
  28.                 Ticket t3=new Ticket();
  29.                 Ticket t4=new Ticket();
  30.                 t1.start();               
  31.                 t2.start();       
  32.                 t3.start();               
  33.                 t4.start();       

  34.         }

  35. }
复制代码




作者: 懒锋2015    时间: 2015-7-2 11:51
呃,你的while循环判断条件有问题,程序不会停止。就算卖了100张票,程序还是会一直循环判断,虽然不再输出了。你把循环判断条件改成卖到100张票就停止就好了
作者: 懒锋2015    时间: 2015-7-2 11:53
另外,多窗口同时卖票是要考虑多线程安全问题的,你的程序这样写会出现一张票被卖出多于一次的情况




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2