妖碧落

导航

匿名内部类实现线程的两种方式

 匿名内部类的使用:  匿名内部类就相当于是   创建了一个子类对象: 编译时看父类,即Thread类,运行时看子类,及重写的run(){}方法

1、  继承Thread 

public class demon1 {
    public static void main(String[] args) {
        Thread t1 = new Thread(){         //  t1是一个线程对象,  暂时没有线程名。  可以通过t1.setName(name)设置线程名   
            @Override
            public void run() {
                System.out.println(this.getName() + ".......aaaaaa");
                super.run();
            }
            
        };
        new Thread(){       //   可以在构造方法里传入一个值,这个值就是线程名
            @Override
            public void run() {
                this.setName("lisoi");   // 在方法里  设置线程名
                System.out.println(this.getName() + "......bb");
                super.run();
            }
            
        }.start();
        t1.setName("zhangsan");
        t1.start();
    }
}

 

 

2、实现Runnable接口

public class demon2_currentThread {

    public static void main(String[] args) {
        new Thread("t1"){    //  直接传入 线程名字

            @Override
            public void run() {
                System.out.println(getName() + "......aaaa");    //  getName() 获取线程名
                
            }
            
        }.start();   //  start 直接开启线程        
        new Thread(new Runnable(){
            public void run() {
                System.out.println(Thread.currentThread().getName()+ "......bb"); 
               //  Runnable接口方式的多线程,不能直接调用Thread 的方法 , 需要通过Thread.currentThread()   返回对当前正在执行的线程的对象的引用。  再来调用Thread的方法
            }
        }).start();
        System.out.println(Thread.currentThread().getName());       
    }

}

 

posted on 2019-08-08 23:50  妖碧落  阅读(2571)  评论(0编辑  收藏  举报