匿名内部类实现线程的两种方式
匿名内部类的使用: 匿名内部类就相当于是 创建了一个子类对象: 编译时看父类,即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()); } }
竹杖芒鞋轻胜马,一蓑烟雨任平生。
回首向来萧瑟处,也无风雨也无晴。