这个线程为什么和书上说的不一致?~
class ThreadSale implements Runnable{ //创建Runnable接口类
private int tickets = 10; //私有变量tickets 代表机票数,是共享数据
public void run(){
while(true){
if(tickets > 0)
System.out.println(Thread.currentThread().getName() + "售机票第"+tickets+"号");
else
System.exit(0);
}
}
}
public class RunnableShare{ //在主类里创建并启动3个线程对象
public static void main(String[] args){
ThreadSale t = new ThreadSale(); //用此对象t作为参数创建3个线程 第二个对象是线程名
Thread t1 = new Thread(t,"第1售票窗口");
Thread t2 = new Thread(t,"第2售票窗口");
Thread t3 = new Thread(t,"第3售票窗口");
t1.start();
t2.start();
t3.start();
}
}
System.out.println(Thread.currentThread().getName() + "售机票第"+tickets+"号");
System.out.println(Thread.currentThread().getName() + "售机票第"+(tickets--)+"号");
{
ThreadSale t = new ThreadSale(); //用此对象t作为参数创建3个线程 第二个对象是线程名
Thread t1 = new Thread(t,"第1售票窗口");
Thread t2 = new Thread(t,"第2售票窗口");
Thread t3 = new Thread(t,"第3售票窗口");
t1.start();
t2.start();
t3.start();
}
}
控制变量的变化,一张票只能售一次,只要售出一张,总数就减一张,
[其他解释]
需要控制这个tickets变量··
[其他解释]
你的那个循环是死循环啦...
[其他解释]
System.out.println(Thread.currentThread().getName() + "售机票第"+(tickets--)+"号");
看好,每卖一张票,票数要减去一张tickets--
[其他解释]
谢谢楼上各位的回答,我改了一下,然后也把数量改大了,然后应该就没问题了~
Java 的习惯还是没有形成~! 思维不好,哎 只有加油了