3个回答
展开全部
会有各种错误吧.
比如,如果一个线程正在迭代某非线程安全集合.
另外一个集合却修改了这个集合.
则会跑出modify什么的.
如果一个线程取了某个对象做操作.另外一个线程却将对象里的内容置空,则会空指针
再比如说.一个线程需要判断某个集合是否为空.如果为空则new一个新的放进去,并在集合里添加一个元素.当他判断到这个集合为空了之后,在new集合的时候,另外一个线程判空,new 集合,并添加了一个元素,
那么第一个线程继续操作,会把第二个线程的元素给抹杀掉.数据丢失.
这样的例子有很多很多.
程序崩溃是轻的.
数据异常会让人崩溃.运行一个程序,每次都得到不同的结果你会是什么表情....
楼上的也说了,线程不宜过多.这是真的.毕竟,线程都是要占用cpu资源.一万个人吃一块冰糕....这个冰糕肯定瞬间就被吃没了.而且,这一万个人基本都吃不着.
比如,如果一个线程正在迭代某非线程安全集合.
另外一个集合却修改了这个集合.
则会跑出modify什么的.
如果一个线程取了某个对象做操作.另外一个线程却将对象里的内容置空,则会空指针
再比如说.一个线程需要判断某个集合是否为空.如果为空则new一个新的放进去,并在集合里添加一个元素.当他判断到这个集合为空了之后,在new集合的时候,另外一个线程判空,new 集合,并添加了一个元素,
那么第一个线程继续操作,会把第二个线程的元素给抹杀掉.数据丢失.
这样的例子有很多很多.
程序崩溃是轻的.
数据异常会让人崩溃.运行一个程序,每次都得到不同的结果你会是什么表情....
楼上的也说了,线程不宜过多.这是真的.毕竟,线程都是要占用cpu资源.一万个人吃一块冰糕....这个冰糕肯定瞬间就被吃没了.而且,这一万个人基本都吃不着.
更多追问追答
追问
3Q!
如你所说线程会出现各种错误,确实会出现各种错误。
但又有疑问:
线程运行时是抢占CPU的,怎么会出现同时运行的情况呢?不会同时运行的话,怎么出现你所说的如下问题?
比如,如果一个线程正在迭代某非线程安全集合.
另外一个集合却修改了这个集合.
求详解!
追答
是这样的,多线程是怎么运行的呢?
是通过争抢cpu的时间片来运行的.
好,我们假定每个线程每次只能占有1秒的cpu时间片.
则,会出现,第一个线程正在循环一个集合的时候,时间片到期.第二个线程拿到cpu的使用权.在第二个线程的1秒内.他会去添加或者删除这个集合中的数据,然后时间片到期.第一个线程抢到了cpu,继续迭代集合中的数据,系统发现,这个集合呗修改过.于是抛出了modify的这种异常
展开全部
线程会占用系统资源,所以考验运行时候的机器硬件配置了。个人经验。线程过多当然能影响程序,甚至崩溃。一般个人做web项目,最多不会超过十个线程。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
线程过多会导致占用系统资源,所有才有了线程池的概念。你可以去了解下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询