多线程(六)---多线程安全相关问题
(一)多线程安全---问题代码
(二) 产生多线程安全问题的缘由
1.线程任务中有处理到共享的数据
2.线程任务中有多个线程操做共享数据
一个线程在操做共享数据的过程当中,其余线程参与了运行,致使数据错误问题安全
3.内存图分析
(三) 解决思想
解决思想:多条线程操做同一数据源时。其中一条线程在操做,其余线程不参与操做计算。多线程
(四) 解决方案
synchronized (对象){ //同步的代码块 }
代码修改以下
class SaleTicket2 implements Runnable{ private int tickets = 100; Object obj = new Object(); public void run(){ while (true){ synchronized (obj){ if (tickets>0){ System.out.println(Thread.currentThread().getName()+"------tickets:"+tickets--); } } } } }