在开发中,为了方便使用线程,需要随手开线程,最简单的做法就是采用匿名内部类方式使用多线程。
匿名内部类的格式:
new 类名或者接口名() {
重写方法;
}
本质:是该类的子类对象或者该接口的实现类对象。
new Thread() {代码...}.start();
new Thread(new Runnable() {代码...}) {}.start();
示例代码如下:
1 package cn.itcast_11; 2 3 /* 4 * 匿名内部类的格式: 5 * new 类名或者接口名() { 6 * 重写方法; 7 * } 8 * 9 * 本质:是该类的子类对象或者该接口的实现类对象。 10 */ 11 public class ThreadDemo { 12 public static void main(String[] args) { 13 // 继承Thread类来实现多线程 14 new Thread() { 15 @Override 16 public void run() { 17 for (int x = 0; x < 100; x++) { 18 System.out.println(Thread.currentThread().getName() + ":" + x); 19 } 20 } 21 }.start(); 22 23 // 实现Runnable接口来实现多线程 24 new Thread(new Runnable() { 25 @Override 26 public void run() { 27 for (int x = 0; x < 100; x++) { 28 System.out.println(Thread.currentThread().getName() + ":" + x); 29 } 30 } 31 }) { 32 }.start(); 33 34 // 面试题 35 // 到底执行的是Thread类的子类对象的run(),还是执行的是Runnable接口的实现类对象的run()呢? 答:是Thread类的子类对象的run() world 36 new Thread(new Runnable() { 37 @Override 38 public void run() { 39 for (int x = 0; x < 100; x++) { 40 System.out.println("hello" + ":" + x); 41 } 42 } 43 }) { 44 @Override 45 public void run() { 46 for (int x = 0; x < 100; x++) { 47 System.out.println("world" + ":" + x); 48 } 49 } 50 }.start(); 51 52 } 53 }
我的GitHub地址: https://github.com/heizemingjun
我的博客园地址: http://www.cnblogs.com/chenmingjun
我的蚂蚁笔记博客地址: http://blog.leanote.com/chenmingjun
Copyright ©2018 黑泽明军
【转载文章务必保留出处和署名,谢谢!】