创建线程有三种方式,分别是继承Thread类、实现Runnable接口、实现Callable接口。通过继承Thread类来创建并启动线程的步骤如下。1.定义Thread类的子类,并重写该类的run()方法,该run()方法将作为线程执行体。2.创建Thread子类的实例,即创建了线程对象。3.调用线程对象的start()方法来启动该线程。通过实现Runnable接口来创建并启动线程的步骤如下。1.定义Runnable接口的实现类,并实现该接口的run()方法,该run()方法将作为线程执行体。2.创建Runnable实现类的实例,并将其作为Thread的target来创建Thread对象,Thread对象为线程对象。3.调用线程对象的start()方法来启动该线程。通过实现Callable接口来创建并启动线程的步骤如下。1.创建Callable接口的实现类,并实现call()方法,该call()方法将作为线程执行体,且该call()方法有返回值。然后再创建Callable实现类的实例。2.使用FutureTask类来包装Callable对象,该FutureTask对象封装了该Callable对象的call()方法的返回值。3.使用FutureTask对象作为Thread对象的target创建并启动新线程。4.调用FutureTask对象的get()方法来获得子线程执行结束后的返回值。