1、继承Thread类
2、实现Runnable接口
3、实现Callable接口
4、通过线程池创建
package com.mock;
import org.junit.jupiter.api.Test;
import java.util.concurrent.*;
public class TestThread {
/**
* 继承Thread类
*/
@Test
public void test1() {
new Thread1().start();
}
/**
* 实现Runnable接口
*/
@Test
public void test2() {
new Thread(new Thread2()).start();
}
/**
* 实现Callable接口
*/
@Test
public void test3() throws ExecutionException, InterruptedException {
FutureTask<String> f = new FutureTask<>(new Thread3());
new Thread(f).start();
//打印结果
//get()方法会一直阻塞
System.out.println(f.get());
}
/**
* 使用线程池
*/
@Test
public void test4() {
ExecutorService executorService = Executors.newFixedThreadPool(2);
executorService.submit(new Thread2());
executorService.shutdown();
}
}
class Thread1 extends Thread {
@Override
public void run() {
System.out.println("方式一");
}
}
class Thread2 implements Runnable {
@Override
public void run() {
System.out.println("方式二");
}
}
class Thread3 implements Callable<String> {
@Override
public String call() throws Exception {
System.out.println("方式三");
return "你好世界";
}
}