java编译后的文件名字带有$接数字的就是匿名内部类的编译结果,接名字的就是内部类的编译结果
例如:TestFrame$1.class是匿名内部类的编译结果,TestFrame$MyJob.class则是内部类MyJob编译后得到的.
使用内部类可以隐藏一些实现的细节, 等等, 还有其他一些好处. 使用匿名类的时候, 要注意代码的可读性。
比如该类编译后会生成:TestCompareAndSwap.class和TestCompareAndSwap$1.class两个文件。
public class TestCompareAndSwap{
public static void main(String[] args){final CompareAndSwap cas = new CompareAndSwap();
for(int i=0; i<10; i++){
// 创建10个线程,模拟多线程环境
new Thread(new Runnable(){
public void run(){
int expectedValue = cas.get();
boolean b = cas.compareAndSet(expectedValue,
(int)(Math.random()*100));
System.out.println(b);
}
}).start();
}
}
}