五种方式创建线程(继承Thread、实现Runnable接口,Thread匿名内部类、Runnable匿名内部类、lambda表达创建Runnable)

    • 1.3 创建线程
      • 方法1 继承 Thread 类((继承)extends Thread 然后重写run)
        • 1) 继承 Thread 来创建一个线程类.
        • 2) 创建 MyThread 类的实例
        • 3) 调用 start 方法启动线程
      • 方法2 实现 Runnable 接口(implements Runnable 然后创建的时候传入接口)
        • 1) 实现 Runnable 接口
        • 2) 创建 Thread 类实例, 调用 Thread 的构造方法时将 Runnable 对象作为 target 参数.
        • 3) 调用 start 方法
      • 对比继承Thread 和 实现 Runnable接口:
      • 其他变形
        • 方法3 匿名内部类创建 Thread 子类对象(匿名内部类 创建的是 ==子类==)
        • 方法4 匿名内部类创建 Runnable 子类对象
        • 方法5 lambda 表达式创建 Runnable 子类对象

1.3 创建线程

方法1 继承 Thread 类((继承)extends Thread 然后重写run)

1) 继承 Thread 来创建一个线程类.

class MyThread extends Thread {
    @Override
    public void run() {
        System.out.println("这里是线程运行的代码");
   }
}

2) 创建 MyThread 类的实例

MyThread t = new MyThread();

3) 调用 start 方法启动线程

t.start(); // 线程开始运行

方法2 实现 Runnable 接口(implements Runnable 然后创建的时候传入接口)

1) 实现 Runnable 接口

class MyRunnable implements Runnable {
    @Override
    public void run() {
        System.out.println("这里是线程运行的代码");
   }
}

2) 创建 Thread 类实例, 调用 Thread 的构造方法时将 Runnable 对象作为 target 参数.

Thread t = new Thread(new MyRunnable());

3) 调用 start 方法

t.start(); // 线程开始运行

对比继承Thread 和 实现 Runnable接口:

  • 继承 Thread 类, 直接使用 this 就表示当前线程对象的引用
  • 实现 Runnable 接口, this 表示的是 MyRunnable 的引用. 需要使用 Thread.currentThread()

其他变形

方法3 匿名内部类创建 Thread 子类对象(匿名内部类 创建的是 子类

// 使用匿名类创建 Thread 子类对象
Thread t1 = new Thread() {
    @Override
    public void run() {
        System.out.println("使用匿名类创建 Thread 子类对象");
   }
};

方法4 匿名内部类创建 Runnable 子类对象

// 使用匿名类创建 Runnable 子类对象
Thread t2 = new Thread(new Runnable() {
    @Override
    public void run() {
        System.out.println("使用匿名类创建 Runnable 子类对象");
   }
});

方法5 lambda 表达式创建 Runnable 子类对象

// 使用 lambda 表达式创建 Runnable 子类对象
Thread t3 = new Thread(() -> System.out.println("使用匿名类创建 Thread 子类对象"));
Thread t4 = new Thread(() -> {
    System.out.println("使用匿名类创建 Thread 子类对象");
});

五种方式创建线程(继承Thread、实现Runnable接口,Thread匿名内部类、Runnable匿名内部类、lambda表达创建Runnable)_第1张图片
五种方式创建线程(继承Thread、实现Runnable接口,Thread匿名内部类、Runnable匿名内部类、lambda表达创建Runnable)_第2张图片
五种方式创建线程(继承Thread、实现Runnable接口,Thread匿名内部类、Runnable匿名内部类、lambda表达创建Runnable)_第3张图片

你可能感兴趣的:(JavaEE初阶,java,jvm,servlet)