1.无状态对象一定是线程安全的
2.静态条件-非原子操作(例如++i,可分解为取值,加1,写值)
3.破坏不变性条件会引发线程安全问题(例如,if else)
4.synchronizer//同步代码块
5.重入锁,保证子类调用父类不会产生死锁
6.没有同步情况下进行变量共享会遇到“重排序”问题
7.加锁机制既可以确保可见性又可以确保原子性,而volatile变量只能确保可见性
8.ArrayList非线程安全,Vector是线程安全
9.使用CountDownLatch等待所有线程执行完毕
10.将List分拆成多个List进行多线程操作速度较快