两个类分别如下:

1. 

2.

<pre name="code" class="java">package Demo2;


3.




4.


import java.util.*;


5.

class Demo2


6.

{


7.

private static ArrayList<String> a = new ArrayList<String>();


8.

public static void main(String[] args)



9.

{


10.

a.add("String0");


11.

threadDemo2 thread1 = new threadDemo2(a);


12.

new Thread(thread1).start();


13.

for(int i = 0;i<500; i++){


14.

for(int j = 0;j<500; j++)


15.

;


16.

}


17.

for(String string : a)


18.

{


19.

sop(string);


20.

}


21.

}


22.




23.

public static void sop(Object obj)



24.

{


25.

System.out.println(obj);


26.

}


27.

}


28.




1. 

2.


package Demo2;


3.


import java.util.*;


4.




5.

class threadDemo2 implements Runnable


6.

{


7.

private ArrayList<String> b;


8.

threadDemo2(ArrayList<String> a){


9.

this.b = a;


10.

}


11.




12.

public void run()



13.

{


14.

b.add("String");


15.




16.

}


17.




18.

public static void sop(Object obj)



19.

{


20.

System.out.println(obj);


21.

}


22.

}


23.




主函数中输出结果为:

String0

String


也就是在子线程中获得了ArrayList a 的地址,并对地址内的值进行了操作。