要主要考虑三个方面:
封装共享变量,识别共享变量的约束条件,指定并发访问策略三个方面下手
1.封装共享变量
导致并发问题的主要问题就在于对于共享变量的共享,多个线程对同一个共享变量进行操作会导致封装的共享变量出现并发问题,于是采用Java的封装思想,将共享变量封装进入对象内部,通过对象内部提供公共方法进行访问,对于可能会出现的并发问题,就只需要对这些公共方法进行制定并发访问策略.
并且,对于很多不会发生变化的共享变量,采用final关键字来修饰,避免出现并发问题
2.识别各个共享变量之间的约束问题
假如有一个上限和一个下限,你必然不能让下限高于上限
所以在共享变量间存在if()这类的判断语句,就需要识别出所有的共享变量间的约束条件,如果识别的约束条件不足,那么会导致制定的并发访问策略南辕北辙
3,制定并发访问策略
对于共享变量间的优化,无非就是
避免共享,利用封装的技术
不变模式,这个以后可以理解一下
管程以及其他的同步工具,Java中使用的是管程,但同样存在信号量,读写锁,乐观锁等同步工具
剩下的还有,使用成熟的工具类,Java SDK中提供了很多成熟的工具类,不要在随便发明轮子了
尽量避免使用低级的同步原语,即为Lock Synchronized Semaphore
避免过早的优化,在进行程序优化之前,必须保证代码的健壮性,才能再进行考虑优化问题