package demo.thread; classsaletickerunnableimoplimplementsrunnable {/* static */intnum=50; 不需要使用static关键字共享数据//一个SaleTickeRunnableImopl对象publicstaticvoidmain (string [ ] args ({ saletickerunableimopls threadthread2=newthread(s,' 2号窗口); threadthread3=newthread(s,' 3号窗口); thread1.start (; thread2.start (; thread3.start (; } @ overridepublicvoidrun ((system.out.println ) ) this:'this ); //demo.runnable impl @ 7c 344 a 45 system.out.println ('当前线程: ' Thread.currentThread ) ); //Thread[接口实现线程,5,main]while(true ) { synchronized ) '锁定' if ' num ) system.out.println ] thread.chread } else { break; } } } this:demo.thread.saletickerunnableimopl @ 16727385
当前线程: Thread[2第二个窗口,5,main]
在二号窗口卖第五十张票
this:demo.thread.saletickerunnableimopl @ 16727385
当前线程: Thread[1第一个窗口,5,main]
在2号窗口卖第49张票
在2号窗口卖第48张票
在2号窗口卖第47张票
在2号窗口卖第46张票
在2号窗口卖第45张票
在2号窗口卖第44张票
在2号窗口卖第43张票
在2号窗口卖第42张票
在2号窗口卖第41张票
在二号窗口卖第四十张票
在2号窗口卖第39张票
在二号窗口卖第三十八张票
在2号窗口卖第37张票
在2号窗口卖第36张票
在二号窗口卖第三十五张票
在2号窗口卖第34张票
在2号窗口卖第33张票
在二号窗口卖第三十二张票
在2号窗口卖第31张票
在二号窗口卖第三十张票
在二号窗口卖第二十九张票
在二号窗口卖第二十八张票
在二号窗口卖第二十七张票
在二号窗口卖第二十六张票
在二号窗口卖第二十五张票
在二号窗口卖第二十四张票
在二号窗口卖第二十三张票
在二号窗口卖第二十二张票
在二号窗口卖第二十一张票
在二号窗口卖第二十张票
在二号窗口卖第十九张票
在二号窗口卖第十八张票
在二号窗口卖第十七张票
在二号窗口卖第十六张票
在二号窗口卖第十五张票
在二号窗口卖第十四张票
在二号窗口卖第十三张票
在1号窗口卖第12张票
this:demo.thread.saletickerunnableimopl @ 16727385
在1号窗口卖第11张票
当前线程: Thread[3号窗口,5,main]
在一号窗口卖第十张票
在一号窗口卖第九张票
在一号窗口卖第八张票
在1号窗口卖第七张票
在1号窗口卖第六张票
在1号窗口卖第五张票
在1号窗口卖第四张票
在1号窗口卖第三张票
在1号窗口卖第二张票
在1号窗口卖第一张票
Disconnected from the target VM,address :‘127.0.0.1:65305’,transport :‘socket’
Process finished with exit code 0