十八、Java并发 Java 之 Runnable 还是 Thread _
写Java 代码的时候,我们经常会有这样的疑问:我到底是实现一个 Runnable 呢,还是扩展一个 Thread 类?
你的答案是什么呢? 那有没有标准答案呢?
答案是什么呢?
我们先来分析下,看看哪种方法在实践中更有意义以及为什么?
扩展一个线程 ( Thread 类 )
简单起见,我们就来定义一个扩展自 Thread 的 SimpleThread 类
public class SimpleThread extends Thread {
private String message;
// standard logger, constructor
@Override
public void run() {
log.info(message);
}
代码也真是简单了,然后我们看看如何运行这个 SimpleThread 类
@Test
public void givenAThread_whenRunIt_thenResult()
throws Exception {
Thread thread = new SimpleThread(
"SimpleThread executed using Thread");
thread.start();
thread.join();
我们也可以把这个 SimpleThread 放到前面章节 一文秒懂 Java ExecutorService 中提到的 ExecutorService 中运行。
@Test
public void givenAThread_whenSubmitToES_thenResult()
throws Exception {
executorService.submit(new SimpleThread(
"SimpleThread executed using ExecutorService")).get();
看起来感觉是不是有点复杂,我们只想在单独的线程中运行单个日志操作而已,使用 Thread 的方式看起来有点复杂化了,要么是 start() 和 join() ,要么是 ExecutorService。