A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

当多条语句在操作同一个线程共享数据时,一个线程对多条语句只执行了一部分,还没有执行完,另一个线程参与进来执行。导致共享数据的错误。

访问共享的,可变的数据,要求同步,为了保证变量元素的可见性,可以采用如下方法:
① 线程封闭 最简单的方式就是不共享数据,如果数据仅在单线程中访问,就不需要任何同步。线程封闭技术是实现线程安全的最简单的方式,当对象封闭在一个线程中,这种做法会自动成为线程安全的,即使被封闭的对象本身并不是。
② 栈限制 将变量限制在方法中。   
③ ThreadLocal 它允许将变量和线程关联在一起,使得每个线程都有一份单独的拷贝。  
④ 不可变性 不可变对象永远是线程安全的,一个对象是不可变的饿,要求它的状态创建后不会改变,所有域都是final类型,并且,它被正确创建。

1 个回复

正序浏览
棒棒哒~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马