通过实现 Runnable 接口的方式创建线程目标类有以下缺点
(1)不是线程类,而是线程的 target 执行目标类
(2)不能直接访问 Thread 的实例方法,必须通过 Thread.currentThread() 获取当前线程实例,才能访问和控制当前线程
通过实现 Runnable 接口的方式创建线程目标类有以下优点
(1)避免由于 Java 单继承带来的局限性
(2)逻辑和数据更好分离。通过实现 Runnable 接口的方法创建多线程更加适合同一个资源被多段业务逻辑并行处理的场景。在同一个资源被多个线程逻辑异步、并行处理的场景中,通过实现 Runnable 接口的方式设计多个 target 执行目标类可以更加方便、清晰地将执行逻辑和数据存储分离,更好地体现了面向对象的设计思想