多线程(六)---多线程安全相关问题

多线程(六)---多线程安全相关问题

(一)多线程安全---问题代码

问题代码

(二) 产生多线程安全问题的缘由

   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--);
                }
            }
        }
    }
}
相关文章
相关标签/搜索