今天,写了一个写了一个买票的案例,测试多线程访问的问题,结果打印总是某一个线程,其他线程都不能进来,下面贴下代码
一。错误代码
打印结果如下
可以看到都是同一个进程打印的值,为何会这样能?,想了很久,解释下,其实问题是清楚的,但是解决问题思路出现了问题,现在解释下问题
二,问题分析
三,解决思路
只要让进程不要一直占据循环就行了,换句话说,就是,将锁加在循环内,这样每个进程都有机会进入到循环中,于是代码如下
四,正确代码
注意,改变了锁加的位置,这样,每个进程都能进入到循环中,这样就能,每个进程都能执行买票的代码了。