黑马程序员技术交流社区
标题:
代码为什么报错啊
[打印本页]
作者:
zc332750
时间:
2014-2-8 11:11
标题:
代码为什么报错啊
本帖最后由 zc332750 于 2014-2-8 12:43 编辑
package demo;
class Ticket extends Thread{
private static int tickets = 100;
public void run(){
while(true){
if(tickets>0){
System.out.println(getName()+" 卖出的第"+tickets--+"张票");
}
}
}
}
public class ThreadDemo {
public static void main(String[] args) {
Ticket t1 = new Ticket();
Ticket t2 = new Ticket();
Ticket t3 = new Ticket();
Ticket t4 = new Ticket();
t1.start();
t2.start();
t3.start();
t4.start();
}
}
作者:
郭运川
时间:
2014-2-8 12:14
while(true){
if(tickets>0)//线程经过判断后在此处休眠1、2、3,在线程4卖出最后一张票时
//tickets = 0;然后线程1、2、3被唤醒继续执行可以被卖出
//tickets ==0;tickets ==-1;tickets ==-2;
{
System.out.println(getName()+" 卖出的第"+tickets--+"张票");
}
}
作者:
迪兰奇迹
时间:
2014-2-8 12:37
我把楼主的代码复制后运行了一遍,发现编译和运行都并未报错,只不过运行到tickes=0后程序并未停下来,还在运行,这是因为 while(true){
if(tickets>0){
System.out.println(getName()+" 卖出的第"+tickets--+"张票");
}
}这个循环并未在tickets=0后跳出循环,程序还在一遍遍 的循环着,时间一长,便会内存溢出。楼主可以在if语句后边添加一个else{break;}来跳出循环!
作者:
那些人之一
时间:
2014-2-8 14:42
你面试过了?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2