(1)继承 Thread 类实现多线程能更好地做到多个线程并发地完成各自的任务,访问各自的数据资源
(2)通过实现 Runnable 接口实现多线程能更好地做到多个线程并发地完成同一个任务,访问同一份数据资源。多个线程的代码逻辑可以方便地访问和处理同一个共享数据资源,这样可以将线程逻辑和业务数据进行有效的分离,更好地体现了面向对象的设计思想
(3)通过实现 Runnable 接口实现多线程时,如果数据资源存在多线程共享的情况,那么数据共享资源需要使用原子类型,或者需要进行线程的同步控制,以保证对共享数据操作时不会出现线程安全问题