java 22

首先回顾下之前的匿名内部类:  

匿名内部类的格式:
  new 接口或者接口名(){
        重写方法
    };
本质:是该类或者接口的子类对象

匿名内部类方式使用多线程
1、new Thread(){代码…}.start();
2、new Thread(new Runnable(){代码…}).start();

例子1:继承Thread类的匿名内部类实现多线程

1         // 一、继承Thread类实现多线程
2         new Thread() {
3             // 线程的代码
4             public void run() {
5                 for (int x = 0; x < 100; x++) {
6                     System.out.println("Thread" + "--" + x);
7                 }
8             }
9         }.start();// 别忘了启动线程

例子2:继承Runnable类的匿名内部类实现多线程

 1         // 二、继承Runnable类实现多线程
 2         new Thread(new Runnable() {
 3             // 线程的代码
 4             public void run() {
 5                 for (int x = 0; x < 100; x++) {
 6                     System.out.println("Runnable" + "--" + x);
 7                 }
 8             }
 9 
10         })
11 
12         {
13             // 这里的代码为空
14         }.start();

由于继承Runnable类实现线程中,start之前的{}为空,这里在继承Thread类中是重写线程的方法的,
 所以,如果两者结合起来的话,会执行Runnable还是Thread?

例子3:同时继承Runnable类和Thread类的匿名内部类来实现多线程

 1         // 三、两者结合
 2 
 3         new Thread(new Runnable() {
 4 
 5             public void run() {
 6                 // 填写继承Ruannble的线程代码
 7                 for (int x = 0; x < 100; x++) {
 8                     System.out.println("hello" + "--" + x);
 9                 }
10 
11             }
12 
13         }) {
14             // 填写继承Thread类的线程代码
15             public void run() {
16                 for (int x = 0; x < 100; x++) {
17                     System.out.println("world" + "--" + x);
18                 }
19             }
20         }.start();
21         //通过运行结果可知道,这里只执行继承Thread类的代码

ps:这个开发中几乎看不到,就怕面试问到。。

如:上面那段代码会不会出错?  不会

  执行的是Runnable的代码还是Thread类的代码? Thread类的代码

何事都只需坚持.. 难? 维熟尔。 LZL的自学历程...只需坚持
原文地址:https://www.cnblogs.com/LZL-student/p/5950890.html