创建线程的5种方法
1.继承thread类,重写run方法。
class Thread1 extends Thread{
@Override
public void run(){
System.out.println("方法1");
}
}
public class Demo1{
public static void main(String[] args) {
Thread1 function1=new Thread1();
function1.start();
}
}
2.实现Runnable接口,重写run方法
class Runnable1 implements Runnable{
@Override
public void run() {
System.out.println("方法2");
}
}
public class Demo1 {
public static void main(String[] args) {
Runnable1 runnable =new Runnable1();
Thread function2=new Thread(runnable);
function2.start();
}
}
3.继承thread类,重写run方法,并使用匿名内部类
public class Demo1 {
public static void main(String[] args) {
Thread function3=new Thread(){
@Override
public void run() {
System.out.println("hello");
}
};
function3.start();
}
}
ps:内部类知识补充
内部类:类的内部又定义了一个类,称为内部类
内部类的分类:
静态内部类:类似于静态变量
实例内部类:类似于实例变量
局部内部类:类似于局部变量
public class Demo1 {
//这些类在类的内部,所以被称为内部类
//静态内部类
static class Inner1 {
}
//实例内部类
class Inner2 {
}
public void test() {
//局部内部类
class Inner3 {
}
}
}
匿名内部类是局部内部类中的一种,使用匿名内部类时,不需要单独写一个类来实现接口,是没有名字的内部类,如其下4.
4.实现 Runnable接口, 重写 run方法, 使用匿名内部类。
public class Demo1 {
public static void main(String[] args) {
Thread function4=new Thread(new Runnable() {
@Override
public void run() {
System.out.println("hello");
}
});
function4.start();
}
}
如上匿名内部类没有名字,相比正常方法三个量匿名内部类只使用了两个量(没有用runnable1)
5.使用 lambda 表达式
public class Demo1 {
public static void main(String[] args) {
Thread function5=new Thread(() ->{
System.out.println("hello");
});
function5.start();
}
}
ps:lambda表达式代码格式:(参数列表)->{代码列表}