0
点赞
收藏
分享

微信扫一扫

Java中实例变量的线程安全问题的分析

书坊尚 2022-02-19 阅读 108
public class Test{
	private int count = 5;//模拟库存量
	public void reduceStock(){//模拟减少库存
		count--;
		System.out.println("还剩" + count);
	}
}

如上代码片段中有一个实例变量,如果在一个多线程高并发的场景下运行,会存在线程安全问题吗?答案是非常有可能。

假设多线程场景下,A线程执行count–,被中断了,然后B线程进来执行count–,也断中断了,然后C线程进来执行count–,又被中断了,然后D线程进来执行count–,又被中断了。此时ABCD四个线程中的count值都是4。然后ABCD线程分别执行打印语句,打印出来的结果都是4,库存的理想状态应该是依次递减的,不应该都存在着都打印出4的情况,因此在这种情况下该实例变量可能存在线程安全问题。

举报

相关推荐

0 条评论