第一种、自定义类继承Thread,重写run()方法
public class Test {
public static void main(String[] args) {
new Demo().start();
}
}
class Demo extends Thread {
@Override
public void run() {
System.out.println("第一种创建方式");
}
}
第二种、自定义类实现Runnable接口
public class Test {
public static void main(String[] args) {
Demo demo = new Demo();
new Thread(demo).start();
}
}
class Demo implements Runnable {
@Override
public void run() {
System.out.println("第二种创建方式");
}
}
第三种、自定义类实现Callable接口
public class Test {
public static void main(String[] args) {
Demo demo = new Demo();
// 引用FutureTask支持
FutureTask<String> ft = new FutureTask(demo);
new Thread(ft).start();
try {
// 获取线程结果,注意:当FutureTask没有执行完的时候,是无法获取结果的,效果类似闭锁。
System.out.println(ft.get());
} catch (Exception e) {
e.printStackTrace();
}
}
}
class Demo implements Callable<String> {
@Override
public String call() throws Exception {
System.out.println("第三种创建方式");
return "第三种创建方式";
}
}