并发 - 多线程的实现方式

多线程的实现方式

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();