Java中创建线程有三种主要方法:
- 继承Thread类创建线程类:首先需要创建一个Thread类的子类,并重写其run()方法,该run()方法的代码将是新线程启动时要执行的操作。然后,创建Thread子类的实例,并调用其start()方法来启动新线程。
- 实现Runnable接口创建线程类:创建一个实现Runnable接口的类,并重写其run()方法。然后,创建Runnable实现类的实例,并将其作为参数传递给Thread类的构造函数。最后,调用Thread实例的start()方法来启动新线程。
- 使用Callable和Future创建线程:创建一个实现Callable接口的类,并实现call()方法,该方法将返回一个结果。然后,使用FutureTask类来包装Callable对象,该FutureTask对象实现了Runnable接口,以便可以像启动线程一样启动它。最后,调用FutureTask实例的run()方法来启动新线程,并通过Future对象获取call()方法的返回结果。
需要注意的是,虽然Java提供了多种创建线程的方法,但建议使用实现Runnable接口或Callable接口的方式来创建线程,因为这种方式更加灵活,并且可以更好地实现多线程之间的资源共享和通信。而继承Thread类的方式虽然简单,但可能会导致线程安全问题,并且不利于代码的维护和扩展。