线程安全问题(面试常考)

首页 > 科技

线程安全问题(面试常考)

来源:甲壳虫 发布时间:2023-10-09 10:40

一. 观察多线程下n++和n--操纵

我们目前所知当一个变量n==0,n++了1000次并且 n--了1000次,我们的预期结果为0,但是当两个线程分别执行++和--操纵时最后的结果是否为0呢?

看这样一段代码:

看一下分别运行3次的结果:

从结果上看都没有达到我们的预期结果,由于两个线程同时操纵一个共享变量时,这其中就涉及到线程安全问题

二. 线程安全概念的引入

我们所知单线程下n++和n--同时执行1000次时结果为0,多线程下大部分不为0,所以我们简朴定义为在多线程下和单线程下执行相同的操纵结果相同时为线程安全

对于多个线程,操纵同一个共享数据(堆里边的对象,方法区中的数据,如静态变量):

假如都是读操纵,也就是不修改值,这时不存在安全问题假如至少存在写操纵时,就会存在线程安全问题

三. 线程不安全的原因

一. 观察多线程下n++和n--操纵

我们目前所知当一个变量n==0,n++了1000次并且 n--了1000次,我们的预期结果为0,但是当两个线程分别执行++和--操纵时最后的结果是否为0呢?

看这样一段代码:

看一下分别运行3次的结果:

一. 观察多线程下n++和n--操纵

我们目前所知当一个变量n==0,n++了1000次并且 n--了1000次,我们的预期结果为0,但是当两个线程分别执行++和--操纵时最后的结果是否为0呢?

看这样一段代码:

看一下分别运行3次的结果:

一. 观察多线程下n++和n--操纵

我们目前所知当一个变量n==0,n++了1000次并且 n--了1000次,我们的预期结果为0,但是当两个线程分别执行++和--操纵时最后的结果是否为0呢?

看这样一段代码:

看一下分别运行3次的结果:

上一篇:华为拒绝了富... 下一篇:如何使用Word...
猜你喜欢
热门阅读
同类推荐