Java中如何创建线程?
主要的方式有三种:
- 继承Thread类
- 实现Runnable接口
- 实现Callable接口
或者使用ExecutorService线程池等等
当然代码的编写确实是这样写的,但是如何去启动所编写的这些线程呢?
事实上,在Java中,创建线程的方式就只有一种:new Thread().start()方法。
而例如ExecutorService线程池、ForkJoin线程池、CompletableFuture类、Timer定时器类、parallelStream并行流……,如果有去看过它们源码的小伙伴应该清楚,它们最终都依赖于Thread.start()方法创建线程。
new Runnable(...); new Callable(...);
只不过是而是创建了两个线程体,或者说两个可以提供给线程执行的“多线程任务”。