成员变量和静态变量是否线程安全?
- 如果它们没有被共享也就是只有一个线程访问说明是安全的。
- 如果它们被共享了,则要根据它们的状态是否能改变来判断是否线程安全。那么又分为两种情况:
1.如果只有读操作,那么肯定是线程安全的
2.如果涉及到读写那么这段代码就是临界区就涉及到了线程安全问题。
局部变量是否线程安全?
- 局部变量是线程安全的
- 但局部变量引用的对象则未必
1.如果该对象没有逃离方法的作用访问,它是线程安全的
2.如果该对象逃离方法的作用范围,需要考虑线程安全
总结
归根结底就是要判断某个变量指向的对象是否被共享,然后再判断被共享后是否是只读,只读线程是安全的。
若涉及读写则在多线程环境是不安全的。