黑马程序员技术交流社区

标题: 多线程的问题,点招被问懵逼 [打印本页]

作者: Jimchan    时间: 2016-9-5 10:45
标题: 多线程的问题,点招被问懵逼
为什么会产生线程不安全问题?怎么解决
作者: Jimchan    时间: 2016-9-5 10:48
求大神指点
作者: crossover    时间: 2016-9-5 10:54
不同步,就好比你蹲坑,拉到一半被别人强行拉出来。同步,你拉完别人再进去
作者: 370452158    时间: 2016-9-5 11:08
多个线程同时开启,比如你的一个线程正在运行,CPU突然切走了,去运行另外一个线程去了,可是你第一个还没运行完,这不肯定就会出现问题!这就是不安全
作者: huoyingxxx    时间: 2016-9-5 11:27
我也很懵逼啊
作者: LShu    时间: 2016-9-5 11:34
线程不安全主要是线程不同步所导致的!要解决这个问题,得在被开启多线程执行的代码中加锁,保证一个线程执行完后,另外一个线程再执行.
作者: 疾速火轮    时间: 2016-9-5 13:36
多线程具有随机性和延迟性,要同通过锁将多条语句操作的共享数据部分的代码进行同步
作者: koyuhau    时间: 2016-9-5 14:06
老师上课有总结的:
1.多线程
2.并发
3.共享同一资源
作者: NihilityChaos    时间: 2016-9-5 14:17
系统碰到有锁的代码时,会对锁进行检查看是否被其他同步代码块锁住,如果有的话线程就会阻塞,跳到别的线程上去,当两段同步代码块都锁住一个对象又想去访问对方的锁住的对象时,就会互不相让,jvm不断的在两个线程之间跳来跳去,这就是死锁
作者: a825125501    时间: 2016-9-5 16:01
因为cpu随机分配线程啊
作者: running小周    时间: 2016-9-5 16:37
同步同步同步
作者: Ssafe    时间: 2016-9-5 18:09
同问,不是很懂
作者: 不灬语    时间: 2016-9-5 20:11
多线程,如果只有一个cpu在执行的话,那么它每次只能执行一个线程,但是是随机执行的,不确定是哪条线程,有可能你正在执行的线程突然被抢了,这就会导致了各种情况发生,所以存在不安全问题.
作者: life写实    时间: 2016-9-5 22:58
线程的随机性和延迟线,怎么解决?加把锁。
作者: kangnam    时间: 2016-9-5 23:51
感觉和学的操作系统差不多
作者: gjf821687    时间: 2016-9-6 00:17
因为计算机CPU的发展,现在都是多核处理器,所以不可能让一个CPU运行,其他CPU在哪里不做事,这样就产生了多线程,产生多线程以后,各个线程之间各自做自己的事情,有可能操作到同一个源,就产生了不安全问题,解决方法就是多线程技术,加个锁
作者: lzxxiong    时间: 2016-9-6 00:31
程序可以写,但是好像不怎么理解
作者: longzhi100    时间: 2016-9-6 08:22
我是来看答案的
作者: 铭天    时间: 2016-9-6 16:39
一个线程跑一半,cpu执行权被别的线程抢走,可能导致正在执行的程序出错,或者数据不准,比如单例设计模式中的懒汉式在多线程的情况下可能产生多个对象,这就违背了单例设计模式的初衷。同步就是保证让一个线程先跑完在让出cpu执行权,能解决多线程不安全问题。
线程安全一般都涉及到synchronized 就是一段代码同时只能有一个线程来操作 不然中间过程可能会产生不可预制的结果。

作者: 冷冷冷白    时间: 2016-9-6 22:07
来学习,老司机好多啊
作者: 细听风语为梧桐    时间: 2016-9-6 22:14
我也很蒙圈,是不是用同步代码块,和wait 就可以解决安全的问题呢?
作者: CaiWeiXiong    时间: 2016-9-6 23:26
加锁synchronized,1.5之后有lock
作者: mqxin    时间: 2016-9-7 00:03
来学习一下大神的回答
作者: 1185573341    时间: 2016-9-7 00:20
提高效率把   
作者: MarsBong    时间: 2016-9-7 00:38
多个线程操作同一个资源造成的造成的资源不同步问题,一个线程正在对这个资源操作,突然又来一个资源进行操作,导致的数据不一致以及异常问题,比如火车站卖票,可能会导致同一张票被卖了好几次,所以必须使用同步代码块或者同步方法进行解决
作者: flydream    时间: 2016-9-7 00:41
因为线程之间是可以随机抢去cpu的,万一你程序运行到一地方,被另一个线程强走,此时数据岂不是改动了吗
作者: zaoan    时间: 2016-9-7 00:46
同步锁




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