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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 韩天雷 高级黑马   /  2014-7-13 01:26  /  7235 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 韩天雷 于 2014-7-13 01:48 编辑


代码执行完后 javaw.exe未退出并大量占用CPU
不知道原因~

代码如下,求解答~
  1. class Ticket implements Runnabl{
  2.         private int tick = 100;
  3.         Object p =new Object();
  4.         public void run() {
  5.                 while (true) {

  6.                         synchronized (p) {
  7.                                 if (tick > 0) {
  8.                                         try {
  9.                                                 Thread.sleep(10);
  10.                                         } catch (Exception e) {
  11.                                         }
  12.                                         System.out.println(Thread.currentThread().getName() + "卖出"
  13.                                                         + tick-- + "号票!");
  14.                                 }

  15.                         }

  16.                 }
  17.         }
  18. }

  19. public class TicketDemo {
  20.         public static void main(String[] args) {

  21.                 Ticket t = new Ticket();

  22.                 Thread t1 = new Thread(t, "1号窗口");
  23.                 Thread t2 = new Thread(t, "2号窗口");
  24.                 Thread t3 = new Thread(t, "3号窗口");
  25.                 Thread t4 = new Thread(t, "4号窗口");

  26.                 t1.start();
  27.                 t2.start();
  28.                 t3.start();
  29.                 t4.start();


  30.         }
  31. }
复制代码


点评

while(true),又没有退出机制,死循环嘛  发表于 2014-7-13 01:44

5 个回复

倒序浏览
本帖最后由 韩天雷 于 2014-7-13 01:50 编辑

3Q~{:3_57:} 按老师的敲的,我还以为我系统出问题了呢~
回复 使用道具 举报
新启动的线程中运行的是一个while的死循环.只是说判断票数大于0就卖.小于零后依旧会一直判断.你可以在加一句判断.如果车票小于等于零就return
回复 使用道具 举报
死循环,改一下就好了
回复 使用道具 举报
路过  学习了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马