本帖最后由 yqlbd 于 2015-11-6 13:11 编辑
请教大家这种写法为何多线程执行会显示卖21张票,单线程执行显示卖20张票,是否是因为CPU执行资格的问题,不甚感激
- //编写一个多线程卖票程序,同时卖20张票。
- public class SellTickets2
- {
- public static void main(String[] args)
- {
- TicketWindow tk = new TicketWindow();
- Thread t1 = new Thread(tk);
- Thread t2 = new Thread(tk);
- t1.setName("1号窗口");
- t2.setName("2号窗口");
- t1.start();
- t2.start();
- }
- }
- class TicketWindow implements Runnable
- {
- static int num=1;
- public void run()
- {
- while(num<21)
- {
- synchronized(this)
- {
- System.out.println(Thread.currentThread().getName()+"正在售出第 "+(num++)+" 张票");
- }
- }
- }
- }
复制代码 程序运行结果如下所示
|
|