public class VariableShareTest {
public static volatile int count =0; //结果证明加上volatile关键字并不能保证变量在线程之间绝对的一致性。
public static int doTest(){
Thread[] threads = new Thread[20];
for(int i=0;i<20;i++){
threads[i] = new Thread(new Runnable(){
@Override
public void run(){ //给每个线程委派一个耗时较长的工作加大线程间竞争的可能性
for(int i=0;i<10000;i++){
count++;
}
}
});
threads[i].start();
}
return count;
}
public static void main(String args[]){
System.out.println(String.valueOf(doTest()));
while(Thread.activeCount()>1) //如果不加这一段代码,函数可能提前返回,得到的结果将会小很多。
Thread.yield();
System.out.println(String.valueOf(VariableShareTest.count));//两个结果的不一致证明在方法中创建的对象并不会随着方法的结束而死亡。<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">还是需要通过加锁了解决线程间的共享问题</span>