在Java中实现多线程主要有两种方式:
继承Thread类
创建一个继承自`Thread`类的子类,重写`run()`方法来定义线程的任务。
通过创建该子类的对象并调用`start()`方法来启动线程。
优点是简单直观,但Java不支持多重继承,因此如果继承`Thread`类,则无法继承其他类。
实现Runnable接口
创建一个实现`Runnable`接口的类,并在接口中定义`run()`方法。
实例化`Runnable`接口的类,并将其作为参数传递给`Thread`类的构造函数。
通过调用`Thread`对象的`start()`方法来启动线程。
优点是可以避免由于Java的单继承特性带来的局限,代码能够被多个线程共享,代码与数据是独立的,适合多个相同程序代码的线程处理同一资源的情况。
这两种方式都可以创建多线程,但实现方式和适用场景有所不同。通常推荐使用实现`Runnable`接口的方式,因为它提供了更好的灵活性和扩展性