黑马程序员技术交流社区

标题: 关于多线程的疑问 [打印本页]

作者: wo1026756529    时间: 2016-9-28 00:30
标题: 关于多线程的疑问
今天学了多线程了,知道了StringBuiler是线程不安全的原因,但还是不知道为什么会不安全?StringBuiler不调用方法也是不安全的??线程安全不是因为重写run()方法,然后调用start方法,调用重写的run方法吗?但stringbuiler也没有调用start啊?怎么就线程不安全了??还有如果有其他线程的时候是不是不应该用StringBuiler了???

作者: yu244934256    时间: 2016-9-28 00:41
真正导致多线程安全问题发生的本质是cpu切换造成的,但是在我们的程序中多个线程在操作共享的数据。由于某个线程正在操作共享数据的时候,还没有彻底操作完成,cpu切换到其他的线程上,而其他线程对共享的数据进行修改,导致cpu再切换回来时共享的数据就和以前的真实数据不一致。加上synchronized的方法或者代码块,就能保证线程排队访问共享数据
作者: 15835811325    时间: 2016-9-28 00:43
线程不安全是因为没有同步,,,cpu会随机切换,造成数据乱序,丢失,,同步,跟这些run方法什么的没有关系,,,
作者: dfdfdfd    时间: 2016-9-28 08:17
7楼说的对,看有没有同步锁
作者: 梦想工程师    时间: 2016-10-3 22:34
意思是锁了stringbuiler?就是安全的??
作者: Zzh94520    时间: 2016-10-3 23:09
66666666666




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2