1. 实现Runable接口
2. 继承Thread
3.实现Callable 接口
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
public class CallableImpl implements Callable<Integer> {
@Override
public Integer call() throws Exception {
int res = 0;
for (int i = 0; i < 100; i++) {
res += i;
}
Thread.sleep(2000L);
return res;
}
}
class Main {
public static void main(String[] args) throws ExecutionException, InterruptedException {
CallableImpl callable = new CallableImpl();
FutureTask<Integer> task = new FutureTask<>(callable);
new Thread(task).start();
System.out.println(task.get());
System.out.println("xxxxxxxxxxxxxxxxxxx");
}
}
4.java.util.concurrent.Executors类
5.ThreadPoolExecutor
package com.thread;
import java.util.concurrent.*;
public class ThreadPool {
private static final ExecutorService EXECUTOR;
static {
EXECUTOR = new ThreadPoolExecutor(
1, 1, 0,
TimeUnit.SECONDS,
new LinkedBlockingQueue<>(1),
Executors.defaultThreadFactory(),
new ThreadPoolExecutor.DiscardPolicy());
}
public static ExecutorService getThread() {
return EXECUTOR;
}
public static void main(String[] args) {
ExecutorService thread = getThread();
Test test = new Test();
Test test2 = new Test();
Test test3 = new Test();
Test test4 = new Test();
thread.submit(test);
thread.submit(test2);
thread.submit(test3);
thread.submit(test4);
thread.shutdown();
}
}
class Test implements Runnable {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + ": L");
}
}