哪个方式好?实现的方式优于继承的方式
 *    ① 避免了java单继承的局限性
 *    ② 如果多个线程要操作同一份资源(或数据),更适合使用实现的方式
请问这里的第二个小点如何和理解?

解决方案 »

  1.   

    你这一个runnable的示例就明白了
      

  2.   

    因为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();
    }
        }