1 多线程下为什么会存在线程安全问题
线程的合理使用能够提升程序的处理性能,一是能够利用多核 CPU 来实现线程的并行执行,二是线程的异步化执行能够提高系统的吞吐量。
虽然线程有这些优点,但同时也带来了很多问题。比如说:
1.1 共享变量带来的安全性问题
先来看个图:
一个变量 i ,如果线程 A 或者线程 B 单独访问并且修改变量 i 的值没有任何问题,那如果并行的修改变量 i ,那就会有安全性问题。
然后用代码来模拟一下这种场景,为了更好的看到效果,我用100个线程:
public class ThreadDemo1 { private static int i = 0; public static void inc() { try { Thread.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } i++; } public static void main(String[] args) throws In