线程的五种创建方式:
1、继承Thread类,重写run()方法,调用start()方法启动线程
public class TestThread1 extends Thread {
@Override
public void run() {
for(int i=0;i<20;i++){
System.out.println("星期一 "+i);
}
}
public static void main(String[] args) {
TestThread1 t1=new TestThread1();
t1.start();
for(int i=0;i<1000;i++){
System.out.println("星期二 "+i);
}
}
}
2、实现Runnable接口,重写run()方法,创建Runnable接口实现类的对象,将Runnable接口类对象作为Thread类的参数。
class TestThread2 implements Runnable{
@Override
public void run() {
for(int i=0;i<20;i++){
System.out.println("晴天 "+i);
}
}
public static void main(String[] args) {
TestThread2 t2=new TestThread2();
new Thread(t2).start();
for(int i=0;i<1000;i++){
System.out.println("雨天 "+i);
}
}
}
3、使用匿名类创建 Thread 子类对象
class TestThread3{
public static void main(String[] args) {
Thread t1 = new Thread() {
@Override
public void run() {
System.out.println("使用匿名类创建 Thread 子类对象");
}
};
t1.start();
}
}
4、使用匿名类创建 Runnable 子类对象
class TestThread4{
public static void main(String[] args) {
Thread t2 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("使用匿名类创建 Runnable 子类对象");
}
});
t2.start();
}
}
5、使用 lambda 表达式创建 Runnable 子类对象
class TestThread5{
public static void main(String[] args) {
Thread t3 = new Thread(() -> {
System.out.println("使用lambda 表达式创建 Runnable子类对象");
});
t3.start();
}
}
函数式接口定义:任何接口只要包含一个唯一的抽象方法,那么它就是一个函数式接口。对于任意的函数式接口,我们可以通过lambda表达式来创建该接口对象。