首页 > 编程语言 > 详细

线程安全问题

时间:2018-04-07 18:03:17      阅读:168      评论:0      收藏:0      [点我收藏+]
/**
 * 出现有些没加入list的原因:线程一拿走了这个list当时里面有10个数据,添加一个变成11个
 * 线程二同时拿走了这个list,当时里面有10个数据,添加一个变成11个(但是正常应该是12个,也就是线程1添加的那个数据没有了)
 */
public class Ticket implements Runnable{
    
    private List<String> list = new ArrayList<>();

    public void run(){
        for(int i=0;i<300;i++){
            try {
                // 调用Thread类的sleep方法,休眠50ms,由于父接口没有throws异常,so我们只能用try...catch
                Thread.sleep(50);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            list.add("xxx,");
            System.out.println(list.size());
        }
    }

}

结论:多线程操作同一个全局变量,加上线程锁吧

线程安全问题

原文:https://www.cnblogs.com/x54256/p/8733980.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!