物件中的靜態屬性是否在多執行緒中共享

jinjian發表於2006-01-12
//1.一個物件中的靜態屬性是否在多執行緒中共享
// 如下:
class test {
public static ArrayList arr = new ArrayList();
public static StringBuffer buf = new StringBuffer();
public static int i = 0;

public synchronized static void add() {
i++;
buf.append(i);
}

public static void String() {
System.out.print(buf.toString());
}
}

//2.若是共享 ,可不可以把單態中的方法改成靜態方法.
// 如下:

class AAA {
private static AAA a = null;
private static StringBuffer buf = new StringBuffer();
private AAA() {
}

public static synchronized AAA getInstance() {
if (a == null) {
a = new AAA();
}
return a;
}
//這裡若改成靜態方法,會不會影響(因為我看單態物件中的方法都不是靜態方法)
public void add(int i ) {
buf.append(i);

}
}

//可否改成
class BBB{
private static StringBuffer buf = new StringBuffer();
public static void add(int i) {
buf.append(i);
}
}


//3.在多執行緒環境下,垃圾回收執行緒會在什麼時回收這個含有靜態屬性的物件.

相關文章