使用Thread创建的时候
Thread thread = new Thread();
开启一个线程不能直接用
Thread thread = new Thread();
thread.start();
因为Thread有两个构造方法,一个无参构造,一个有参构造,并且Thread里的源码:
@Override
public void run() {
if (target != null) {
target.run();
}
}
如果采用上面的方式target为null
所以使用无参和有参:
1.使用无参构造的创建线程,使用匿名内部类的方式:
Thread thread = new Thread(){
@Override
public void run(){
system.out.println("1111");
}
};
thread.start();
2.使用有参构造的方式创建线程,使用lambda表达式
Thread thread = new Thread(()->{
system.out.println("2222");
}
});
总结两种方式,第一种假设匿名内部类为A,则是A extends Thread
第二种假设lambda表达式的匿名内部类是B,则B implements Runnable
且第一种方式不能写成lambda的形式(目前探索是不能)
因为lambda一般针对的是interface