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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 迦南 中级黑马   /  2014-8-16 23:45  /  5079 人查看  /  26 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

java中多线程怎么造成不安全的,如何解决这个不安全问题?

26 个回复

倒序浏览
多个线程执行共同的代码就会出现线程不安全,要解决这些问题,就要使多线程执行的代码同步
回复 使用道具 举报
多个线程对一个共享数据进行操作,而且操作代码不止一行,就可能发生某一进程在对数据操作到一半的时候停了,这时候另一个进程又对这个没有处理完的数据进行操作,从而导致安全问题
回复 使用道具 举报
多个线程并发访问某一执行体时,因为CPU的 高速切换造成的
回复 使用道具 举报
多线程共享代码容易出现不安全,需要使用同步锁,同步锁又容易产生死锁,所以很让人纠结!
回复 使用道具 举报
共用资源不安全,容易相互抢夺资源
回复 使用道具 举报
碎流 高级黑马 2014-8-17 09:58:46
7#
cpu的切换容易造成线程执行的不安全,通过确保一个线程彻底执行完再切换其他线程来解决,
回复 使用道具 举报
由于资源共享,若不加控制就是造成数据出错。
回复 使用道具 举报
自己去看毕向东那个视频,里面有个买火车票的例子,如果线程不加锁,那机会出现一节车厢有100个作为,结果卖出去多于100张票的情况.
回复 使用道具 举报
hsy 来自手机 中级黑马 2014-8-17 22:03:26
10#
多线程不安全的判断条件:1.是否存在共享数据源?2.是否对共享数据有多个操作?3.是否在多线程中(单线程不考虑)解决方法:对不安全的部分加锁,利用synchronize语句,后跟任意对象,但必须是同一个
回复 使用道具 举报
ximi 中级黑马 2014-8-17 22:42:04
11#
主要是数据值的操作问题,容易造成脏数据,无法保证数据的一致性,所以一般使用同步块或线程安全的对象
回复 使用道具 举报
楼主来水贴吧 ,  这个东西 毕老师不是讲的很清楚吗?
回复 使用道具 举报
认真看一下视频吧
回复 使用道具 举报
原因:当多条语句在操作同一个线程共享数据时,一个线程对多条语句只执行了一部分还没执行完,另一个线程就参与进来执行,导致了共享数据错误。解决办法:对多条操作共享数据的语句,只能让1个线程都执行完。在执行过程中,其他线程不可以参与执行。使用同步,sychronized.
回复 使用道具 举报
多个线程并发访问共享资源时,CPU高速切换造成一个线程访问共享资源后尚未保存就被另一个线程抢走访问权,这就是不安全的原因,用同步锁来解决啊synchronized或者Lock
回复 使用道具 举报
舍我其谁 发表于 2014-8-17 00:24
多个线程执行共同的代码就会出现线程不安全,要解决这些问题,就要使多线程执行的代码同步 ...

嗯,谢谢回答
回复 使用道具 举报
Huberry 发表于 2014-8-17 01:12
多个线程对一个共享数据进行操作,而且操作代码不止一行,就可能发生某一进程在对数据操作到一半的时候停了 ...

嗯,谢谢回答
回复 使用道具 举报
嘿~~ 发表于 2014-8-17 08:29
多个线程并发访问某一执行体时,因为CPU的 高速切换造成的

这么神奇
回复 使用道具 举报
思维 发表于 2014-8-17 09:11
多线程共享代码容易出现不安全,需要使用同步锁,同步锁又容易产生死锁,所以很让人纠结! ...

哦,这样呀
回复 使用道具 举报
菜鸟一号 发表于 2014-8-17 09:37
共用资源不安全,容易相互抢夺资源

嗯,谢谢
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马