一、继承Thread类
public class MyThread extends Thread {
private String name;
public MyThread(String name) {
this.name = name;
}
public void run() {
System.out.println(this.name);
}
public static void main(String[] args) {
MyThread myThread = new MyThread("thread1");
myThread.start();
// 匿名内部类
new Thread() {
public void run() {
System.out.println("thread2");
}
}.start();
}
}
二、实现Runable接口
优点:避免单继承局限
public class MyRunnable implements Runnable {
@Override
public void run() {
System.out.println("thread creat ...");
}
public static void main(String[] args) {
Thread thread1 = new Thread(new MyRunnable());
thread1.start();
Thread thread2 = new Thread(new Runnable() {
public void run() {
System.out.println("thread creat ...");
}
});
thread2.start();
}
}
三、实现Callable接口(带返回值)
import java.util.concurrent.FutureTask;
public class MyCallable implements Callable<Integer>{
@Override
public Integer call() throws Exception {
System.out.println("计算...");
return 100;
}
public static void main(String[] args) throws InterruptedException, ExecutionException {
MyCallable myCallable = new MyCallable();
FutureTask<Integer> task = new FutureTask<>(myCallable);
Thread thread = new Thread(task);
thread.start();
Integer result = task.get();
System.out.println(result);
}
四、线程池创建