Java 多线程学习笔记二十八(总结)
内容来自B站【狂神说Java】多线程详解
package com.example.demo.thread;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
public class TestNew {
public static void main(String[] args) {
new MyThread().start();
new Thread(new MyRunnable()).start();
FutureTask<String> task = new FutureTask<>(new MyCallable());
new Thread(task).start();
try {
System.out.println(task.get());
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
}
}
// 1. 继承Thread类
class MyThread extends Thread {
@Override
public void run() {
System.out.println("继承Thread-->" + Thread.currentThread().getName());
}
}
// 2. 实现Runnable接口
class MyRunnable implements Runnable {
@Override
public void run() {
System.out.println("实现Runnable-->" + Thread.currentThread().getName());
}
}
// 3. 实现Callable接口
class MyCallable implements Callable<String> {
@Override
public String call() throws Exception {
return "实现Callable-->" + Thread.currentThread().getName();
}
}
输出
继承Thread-->Thread-0
实现Runnable-->Thread-1
实现Callable-->Thread-2