您的位置:首页 > 其它

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

2017-03-17 00:00 197 查看

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

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



(二) 产生多线程安全问题的原因

   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--);
}
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: