为了进一步了解线程,我们从一个经典的买车票的例子开始。
假设铁道部的网站上有100张火车票,三个售票点一起开始卖票。我们用一个售票点一个线程来模拟,实现多线程。
先看一个程序:
输出结果如下:
以上说明:一个线程对象只能启动一个线程,无论你掉用多少遍start()方法都是不行的。
那么就会有人跟我一样会去尝试以下这种方法了。
修改原来的主函数里的内容,如下:
结果如下:
以上中每个线程都从100开始计数,也就是铁道部本来只有100张票,现在却要卖300张,显然不合理。这不是我们所想要的多线程。
想要达到我们的要求只有创建一个共同的资源对象(即100张票),但要多个线程去处理同一个资源,并且每个线程所运行的程序代码是一样的。这时候我们就得考虑实现多线程的另一种方式了,如我上一篇博客中写道的。实现Runnable接口。
具体如下:
结果如下:
到此我们实现我们想要的效果,哈哈。