在Java中,开启多线程可以通过以下几种常见方法:
继承Thread类
重写`run()`方法,编写线程执行的代码。
创建子类的实例,并调用`start()`方法启动线程。
实现Runnable接口
创建一个类,实现Runnable接口。
重写`run()`方法,编写线程执行的代码。
创建实现类的实例,传递给Thread类的构造函数。
调用Thread对象的`start()`方法启动线程。
使用匿名内部类
创建一个匿名内部类,实现Runnable接口。
在main方法中,直接创建Thread对象,并将匿名内部类作为参数传递给Thread构造函数。
调用Thread对象的`start()`方法启动线程。

使用lambda表达式 (Java 8及以上版本):
创建一个实现Runnable接口的lambda表达式。
创建Thread对象,并将lambda表达式作为参数传递给Thread构造函数。
调用Thread对象的`start()`方法启动线程。
实现Callable接口
创建一个类,实现Callable接口。
实现`call()`方法,该方法可以返回值,并且可以抛出异常。
创建Callable实例,通常通过FutureTask包装器。
创建Thread对象,并将FutureTask实例作为参数传递给Thread构造函数。
调用Thread对象的`start()`方法启动线程。
以上方法都可以启动多线程,但需要注意的是,实现Runnable接口通常是推荐的方式,因为它允许类继承其他类。而继承Thread类则意味着该类不能再继承其他类。
请根据您的具体需求选择合适的方法来开启多线程
