title: java多线程之线程创建
categories: java多线程基础
一、通过继承Thread类
通过直接继承Thread类创建线程是最简单的方法
class Thread1 extends Thread {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + "继承Thread");
}
}
// 启动线程
new Thread1().start();
二、通过实现Runnble接口
class Thread2 implements Runnable {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + "实现Runnable");
}
}
// 启动线程
new Thread(new Thread2()).start();
三、直接使用匿名内部类创建
new Thread(()->{
System.out.println("函数式编程");
}).start();
四、能够获得结果的线程
上述两种方法都是没有返回值的线程运行
我们可以通过实现Callable接口来创建带返回值的线程
class Thread3 implements Callable<String> {
@Override
public String call() throws Exception {
System.out.println(Thread.currentThread().getName());
return "aaa";
}
}
// 启动线程
// 方法一:
// 创建FutureTask实例
FutureTask<String> stringFutureTask = new FutureTask<>(new Thread3());
// 与实现Runnable接口相同的启动方式
new Thread(stringFutureTask).start();
// 阻塞式获取线程返回值
String s = stringFutureTask.get();
System.out.println(s);
// 方法二:
// 使用线程池提交Callable接口实现类
Future<String> submit = Executors.newFixedThreadPool(1).submit(new Thread3());
// 阻塞式获取返回值
String s1 = submit.get();
System.out.println(s1);