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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wo1026756529 中级黑马   /  2016-9-28 00:30  /  898 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天学了多线程了,知道了StringBuiler是线程不安全的原因,但还是不知道为什么会不安全?StringBuiler不调用方法也是不安全的??线程安全不是因为重写run()方法,然后调用start方法,调用重写的run方法吗?但stringbuiler也没有调用start啊?怎么就线程不安全了??还有如果有其他线程的时候是不是不应该用StringBuiler了???

5 个回复

倒序浏览
真正导致多线程安全问题发生的本质是cpu切换造成的,但是在我们的程序中多个线程在操作共享的数据。由于某个线程正在操作共享数据的时候,还没有彻底操作完成,cpu切换到其他的线程上,而其他线程对共享的数据进行修改,导致cpu再切换回来时共享的数据就和以前的真实数据不一致。加上synchronized的方法或者代码块,就能保证线程排队访问共享数据
回复 使用道具 举报
线程不安全是因为没有同步,,,cpu会随机切换,造成数据乱序,丢失,,同步,跟这些run方法什么的没有关系,,,
回复 使用道具 举报
7楼说的对,看有没有同步锁
回复 使用道具 举报
意思是锁了stringbuiler?就是安全的??
回复 使用道具 举报
66666666666
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马