因为java有一个匿名类的概念。 匿名类的引入的目的是让java支持闭包,在同一个代码块中创建的闭包可以访问该代码块的自由变量(也就是带有final修饰的局部变量)。 例: public static void main( String[] args ) { final AtomicInteger a = new AtomicInteger(0); //这个是“多线程要操作的同一份资源”,也是自由变量,需要带final修饰 for (int i = 0; i < 100; i++) { //创建100个线程 new Thread(new Runnable() { @Override public void run() { //线程在这里操作了“a”这个资源,闭包使得其可以访问a,Runnable接口的可继承性质使得闭包可以实现 System.out.println(a.getAndIncrement()); } }).start(); } }
匿名类的引入的目的是让java支持闭包,在同一个代码块中创建的闭包可以访问该代码块的自由变量(也就是带有final修饰的局部变量)。
例:
public static void main( String[] args )
{
final AtomicInteger a = new AtomicInteger(0); //这个是“多线程要操作的同一份资源”,也是自由变量,需要带final修饰
for (int i = 0; i < 100; i++) { //创建100个线程
new Thread(new Runnable() {
@Override
public void run() {
//线程在这里操作了“a”这个资源,闭包使得其可以访问a,Runnable接口的可继承性质使得闭包可以实现
System.out.println(a.getAndIncrement());
}
}).start();
}
}