码迷,mamicode.com
首页 > 编程语言 > 详细

线程安全问题

时间:2018-04-07 18:53:14      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:string   tac   body   ticket   线程锁   cat   pre   runnable   一个   

/**
 * 出现有些没加入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());
        }
    }

}

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

线程安全问题

标签:string   tac   body   ticket   线程锁   cat   pre   runnable   一个   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!