/**
* 创建线程的五种方法
*/
public class HowToCreateThread {
/**
* 第一种继承Thread类,重写run方法
*/
static class MyThread extends Thread {
@Override
public void run() {
System.out.println("Hello MyThread!");
}
}
/**
* 第二种,实现runnable接口
*/
static class MyRun implements Runnable {
@Override
public void run() {
System.out.println("Hello MyRun!");
}
}
/**
* 第四种,带返回值的任务执行
*/
static class MyCall implements Callable<String> {
@Override
public String call() {
System.out.println("Hello MyCall");
return "success";
}
}
/**
* 启动线程的5种方式
*/
public static void main(String[] args) throws Exception {
new MyThread().start();//第一种
new Thread(new MyRun()).start();//第二种
//第三种lambda
new Thread(() -> {
System.out.println("Hello Lambda!");
}).start();
//第四种,带返回值的任务执行,实现Callable接口(非线程池)
FutureTask<String> task = new FutureTask<>(new MyCall());
Thread t = new Thread(task);
t.start();
System.out.println(task.get());
//第五种,线程池方法
ExecutorService service = Executors.newCachedThreadPool();
service.execute(() -> {
System.out.println("Hello ThreadPool");
});
//第四种,带返回值的任务执行,实现Callable接口(非线程池)
Future<String> f = service.submit(new MyCall());
String s = f.get();
System.out.println(s);
service.shutdown();
}
启动线程的5种方法
最新推荐文章于 2024-05-01 19:17:00 发布