线程安全的标准,对多线程的共享资源进行了合理的访问控制。访问控制的关键点:原子性、可见性、有序性。
原子性:a++操作可进行分解不具备原子性,会导致线程安全问题,可使用syncronized保证操作的原子性。
可见性:多线程任务中存在主内存与工作内存,主内存是唯一的所有线程共用,每个线程具有单独的工作内存。存在主内存与工作内存同步的问题,使用syncronized、volatile关键字可以保证同步的原子性。在对象中使用volatile定义是否停止字段,可以立即控制所有线程的启停。但是volatile无法保证操作的原子性,对于a++操作无法保证线程安全性。
有序性:代码的执行顺序可能与书写顺序不同,比如书写时第一行加载配置,第二行赋值加载状态为true,执行时可能先执行第2行,在多线程状态下可能导致其它线程获取配置信息报错。可以使用syncronized、volatile关键字进行控制。