静态类和单例的抉择
先说说我要实现的要求:我要一个Map,这个Map是常量,但是它要进行初始化,填充数据。而且这个Map要可以重用,实现优雅点的
运行结果:
我指的是yyjn12的回复。我在我的回复中引用了yyjn12的发言。但你似乎理解成了我在针对楼主的代码来说的。
这个没必要在追究了。
第二个问题,我的意思是,如果类加载的机制决定了根本不可能出现并发加载的情况,那就不必说什么“自动加锁”的话。比如,java中给一个整型的变量赋值时,是线程安全的,我们总不能说成“在给整型赋值时,jvm给它自动加了锁”吧?会让人犯晕的。这个我去了解一下类加载机制吧。
我指的是yyjn12的回复。我在我的回复中引用了yyjn12的发言。但你似乎理解成了我在针对楼主的代码来说的。
这个没必要在追究了。
嗯,仔细看了下确实是我搞错了。 56 楼 mhz_1986 2009-03-03 静态初始化不错,简洁! 57 楼 huangdan817 2009-03-04 使用静态块 58 楼 insiku 2009-03-13 andot 写道找不到服务器 写道初始化需要同步这个思想是正确的,但是不需要我们去显式的干这个事情,JVM会"自动加锁"
比如,线程T1调用某个类A,若A没有被加载,那么A会被JVM加载,如果在加载的过程中有其他线程T2也要调用A,T2那么只能等待,而不是再去加载。也许在加载过程中T1的时间片到期,但是T2还是会继续阻塞,直到A被加载完成。所以这个过程就好像JVM自动加锁了一样。。。。。。。。。。。
嗯,我那个测试程序就是来说明这一点的。我愿意为 JVM 不会“自动加锁”,可是测试结果表明 JVM 会“自动加锁”,所以表明我以前的想法是错的。
锁只是为了多线程的数据同步而已
如果加载类 只是一个线程的话 那又哪来锁的概念???
你这样为某种现象强加自圆其说的解释 对后来人是会造成误解的 59 楼 andot 2009-03-13 insiku 写道andot 写道找不到服务器 写道初始化需要同步这个思想是正确的,但是不需要我们去显式的干这个事情,JVM会"自动加锁"
比如,线程T1调用某个类A,若A没有被加载,那么A会被JVM加载,如果在加载的过程中有其他线程T2也要调用A,T2那么只能等待,而不是再去加载。也许在加载过程中T1的时间片到期,但是T2还是会继续阻塞,直到A被加载完成。所以这个过程就好像JVM自动加锁了一样。。。。。。。。。。。
嗯,我那个测试程序就是来说明这一点的。我愿意为 JVM 不会“自动加锁”,可是测试结果表明 JVM 会“自动加锁”,所以表明我以前的想法是错的。
锁只是为了多线程的数据同步而已
如果加载类 只是一个线程的话 那又哪来锁的概念???
你这样为某种现象强加自圆其说的解释 对后来人是会造成误解的
我的例子里有7个并发线程在访问同一个数据,当然是涉及到多线程的数据同步了,怎么会只有一个线程呢。 60 楼 xcly 2009-03-18 结贴,不要复杂化