(1)继承 Thread 类:通过继承 Thread 类并重写 run() 方法,然后实例化并调用 start() 方法启动线程。
(2)实现 Runnable 接口:通过实现 Runnable 接口并实现 run() 方法,然后将 Runnable 实例传递给 Thread 对象
(3)实现 Callable 接口:通过实现 Callable 接口(支持返回值),结合 FutureTask 或线程池提交任务。
(4)使用线程池:通过 ExecutorService 线程池管理线程,避免频繁创建和销毁线程的开销。