多线程同时访问同个地址问题

多线程同时修改同各全局变量,会导致程序死掉么

谢谢

6个回答

不会。(回答还得至少10个字符,真扯淡)

不是线程安全会导致数据紊乱。

数据可能会乱,但是程序不会死

不会导致程序死掉,但是如果多线程同时访问全局变量而没有作同步处理的话,那么最终修改的数据可能不合逻辑。
例如:数值序列生成器,简单的共享变量++操作。

 public class UnsafeSequence{
     private int value;
         public int getNext(){
             return value++;
        }
 }

getNext如果执行时机不对,那么两个线程在调用getNext时会得到相同的值,因为value++操作本身包含三种独立的操作,读value,value+1,写入value,这三个动作如果在多个线程之间交替执行,就可能导致最终的数据不合常理。

访问变量不是原子化操作,会造成脏读数据,结果出错,需要做线程同步。
线程同步做的不当,主要是锁和同步不正确会导致死锁(在现代多任务操作系统上不是死机,只是你的程序卡死了)。

主线程同步会导致程序死锁
在子线程上也会造成卡死

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐