线程安全的几种情况
1.无论任何线程安全问题,一定要有共享变量
2.情况一:代码是同步的,例如我们平常写的代码,但是tomcat分发请求是多线程的,每一个请求过来都会开启一个线程
而tomcat有一个主线程,会加载servlet,controller......
如果代码是同步的,但是同步代码中有共享数据,例如服务启动tomcat加载的ioc容器里面的都是共享变量,
代码块的操作,可能会导致多线程执行和单线程执行的结果不一样,那么线程不安全
情况二:代码中,我们自己开启了多个线程去异步完成任务,那么就算tomcat只是分发一个线程过来执行这块代码
由于这块代码本身就是异步的,那么如果有共享变量,并且每次执行这块代码,由于代码是异步的,那么可能出现线程安全问题
等于双重多线程,tomcat多线程,代码块也是多线程的
3.其本质就是有共享变量,而且这块代码的执行会出现不同的情况,而导致这个情况的就是代码 在多个线程中执行