A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© g552092947 中级黑马   /  2015-7-2 11:35  /  909 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么这段程序执行后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. }
复制代码



2 个回复

倒序浏览
呃,你的while循环判断条件有问题,程序不会停止。就算卖了100张票,程序还是会一直循环判断,虽然不再输出了。你把循环判断条件改成卖到100张票就停止就好了
回复 使用道具 举报
另外,多窗口同时卖票是要考虑多线程安全问题的,你的程序这样写会出现一张票被卖出多于一次的情况
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马