目录
[1、继承Thread 来创建一个线程类](#1、继承Thread 来创建一个线程类)
[2、实现 Runnable 接口来创建 Thread 类](#2、实现 Runnable 接口来创建 Thread 类)
[3、使用匿名内部类创建 Thread 子类对象](#3、使用匿名内部类创建 Thread 子类对象)
[4、使用匿名内部类创建 Runnable 子类对象](#4、使用匿名内部类创建 Runnable 子类对象)
[5、使用 lambda 表达式创建 Runnable 子类对象](#5、使用 lambda 表达式创建 Runnable 子类对象)
1、继承Thread 来创建一个线程类
java
//方法一:继承Thread类
//继承 Thread 来创建一个线程类
class MyThread extends Thread {
@Override
public void run() {
//在这里面写的代码,就是该线程要完成的工作
System.out.println("线程运行");
}
}
public class Demo1 {
public static void main(String[] args) throws InterruptedException {
//创建 MyThread 的实例
MyThread thread = new MyThread();
//调用 start 方法启动线程
thread.start();
}
}
2、实现 Runnable 接口来创建 Thread 类
java
//方法二: 实现 Runnable 接口
//实现 Runnable 接口
class MyRunnable implements Runnable {
@Override
public void run() {
//在这里面写的代码,就是该线程要完成的工作
System.out.println("线程运行"); }
}
public class Demo2 {
public static void main(String[] args) {
// 创建 Thread 类实例,调用 Thread 的构造方法时将 Runnable 对象作为参数
Thread thread = new Thread(new MyRunnable());
//调用 start 方法启动线程
thread.start();
}
}
对比方法一与方法二:
1、继承Thread 类,可以直接使用 this 表示当前线程对象的使用。
2、实现 Runnable 接口,this表示的是 MyRunnable 的引用,要表示当前线程对象需要使用 currentThread() 方法。
3、使用匿名内部类创建 Thread 子类对象
java
//方法三:使用匿名内部类创建 Thread 子类对象
public class Demo3 {
public static void main(String[] args) {
//使用匿名内部类创建 Thread 子类对象
Thread thread = new Thread() {
@Override
public void run() {
System.out.println("使用匿名内部类创建 Thread 子类对象");
}
};
//启动线程
thread.start();
}
}
4、使用匿名内部类创建 Runnable 子类对象
java
//方法四:使用匿名内部类 Runnable 子类对象
public class Demo4 {
public static void main(String[] args) {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("使用匿名内部类创建 Runnable 子类对象");
}
});
thread.start();
}
}
5、使用 lambda 表达式创建 Runnable 子类对象
java
//方法五:使用 lambda 表达式创建 Runnable 子类对象
public class Demo5 {
public static void main(String[] args) {
Thread thread = new Thread(() -> {
//在这里面写的代码,就是该线程要完成的工作
System.out.println("线程运行");
});
//启动线程
thread.start();
}
}
较为推荐lambda写法,较为方便~