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 子类对象");
});