想练习一下,但run方法那个箭头不知道怎么写,有没有别的方法能实现图中run方法的
你要定义一个行程类继承Thread或实现Runnable接口,再重写里面的run方法。
图1中的箭头应该是IDE把lambda表达式折叠起来了,所以我建议你学习一下匿名函数,这是java8就支持的特性,会很常见。
代码的简化有一条非常清晰的逻辑,建议你按照这条线学习:外部类(基础写法)->内部类->匿名内部类->lambda表达式
首先是基础写法,继承Thread类,并在使用时实例化该Thread类,通过调用start方法来产生线程并让线程执行Thread类中的run方法。
同时,Thread的构造函数也支持传入一个Runnable接口的示例来创建Thread:
class MyThread implements Runnable {
@Override
public void run() {
System.out.println("MyThread run.");
}
}
class Test {
public static void main(String[] args) {
Thread thread = new Thread(new MyThread());
thread.start();
}
}
实际上,MyThread类和Test类密切相关,并且只有在Test类运行时才需要调用MyThread类,所以可以利用java内部类的特性简化上述代码。java中内部类共有4种,不算匿名类还有3种,这里只采用静态内部类的写法:
class Test {
private static class MyThread implements Runnable {
@Override
public void run() {
System.out.println("MyThread run.");
}
}
public static void main(String[] args) {
Thread thread = new Thread(new MyThread());
thread.start();
}
}
当程序中只有一处地方需要使用内部类时,可以使用java提供的匿名内部类特性来简化内部类的编写:
class Test {
public static void main(String[] args) {
Thread thread = new Thread(new Runnable(){
@Override
public void run() {
System.out.println("MyThread run.");
}
});
thread.start();
}
}
java支持lambda函数特性,其中lambda表达式可以用来实例化只有一个函数的接口。所以可以用lambda表达式简化至如下:
class Test {
public static void main(String[] args) {
Thread thread = new Thread(() -> System.out.println("MyThread run."));
thread.start();
}
}