static变量同步问题的疑惑
我的期望是在程序中保存一个类似于全局变量的对象,但要防止多线程访问时的冲突.这仿佛是一个非常基础的要求.
如果用static Map map = new HashMap();然后在访问的方法里用synchronized(map){处理map},这样能不能起到作用?
对于同步,我的理解是这样的:通常的synchronized用法是修饰方法或者块,作用于块的时候一般是synchronized(this)或者是synchronized(A.class)的形式,防止多线程同时访问this的所有同步方法或类A的所有static同步方法.但是synchronized(map)是不是就是不能多线程同时访问map呢?
另外,static变量的生命周期是怎样的,是JVM关闭才结束的吗?网上某些文章说static变量的生命周期随着类的生命周期消亡,那类的生命周期是什么样的呢?