多线程的实现方式
Java多线程实现方式主要有四种:
- 继承
Thread
类 - 实现
Runnable
接口 - 实现
Callable
接口 - 使用线程池
继承 Thread 类
class MyThread extends Thread {
@Override
public void run() {
System.out.println("MyThread.run()");
}
}
MyThread myThread1 = new MyThread();
MyThread myThread2 = new MyThread();
myThread1.start();
myThread2.start();
实现 Runnable 接口
class MyTask implements Runnable {
@Override
public void run() {
System.out.println("MyTask running....");
}
}
new Thread(new MyTask()).start();
实现 Callable 接口
Callable
接口可以在任务执行完之后获取结果:
public class MyCallable implements Callable<String> {
@Override
public String call() throws Exception {
return String.valueOf(System.currentTimeMillis());
}
}
ExecutorService service = Executors.newSingleThreadExecutor();
MyCallable task = new MyCallable(20);
Future<String> future = service.submit(task);
String time = future.get();
System.out.println(time);
线程池
Executors
是一个辅助创建各种线程池的工具类:
Executor executor = Executors.newSingleThreadExecutor();
executor.execute(() -> System.out.println("Hello World"));
提交任务并获取返回值:
ExecutorService executorService = Executors.newFixedThreadPool(10);
Future<String> future = executorService.submit(() -> "Hello World");
// some operations
String result = future.get();