JAVA基础:Java Thread应该注意的问题(二)

2014-11-23 22:14:45 · 作者: · 浏览: 1
递给不同的类。

(3)利用字符串常量的“原子性”。



对于第三种方法,这里做一下解释。一般来说,程序代码中的字符串常量经过编译之后,都具有唯一性,即,内存中不会存在两份相同的字符串常量。

(通常情况下,C++C语言程序编译之后,也具有同样的特性。)

比如,我们有如下代码。

String A = “atom”;

String B = “atom”;

我们有理由认为,A和B指向同一个字符串常量。即,A==B。

注意,声明字符串变量的代码,不符合上面的规则。

String C= new String(“atom”);

String D = new String(“atom”);

这里的C和D的声明是字符串变量的声明,所以,C != D。



有了上述的认识,我们就可以使用字符串常量作为同步对象。

比如我们在不同的类中,使用synchronized(“myLock”), “myLock”.wait(),“myLock”.notify(), 这样的代码,就能够实现不同类之间的线程同步。

本文并不强烈推荐这种用法,只是说明,有这样一种方法存在。



本文推荐第二种方法,(2)用参数传递的方法,把同步对象传递给不同的类。