在Java中,有两种主要的方式来创建线程:

  1. 实现Runnable接口: 创建一个类并实现Runnable接口,然后重写run()方法来定义线程执行的任务。接着创建一个Thread对象并将实现了Runnable接口的类作为参数传递给Thread对象的构造函数,最后调用Thread对象的start()方法启动线程。

示例代码如下:

public class MyRunnable implements Runnable {
    @Override
    public void run() {
        System.out.println("Thread is running");
    }
}

public class Main {
    public static void main(String[] args) {
        MyRunnable myRunnable = new MyRunnable();
        Thread thread = new Thread(myRunnable);
        thread.start();
    }
}
  1. 继承Thread类: 创建一个类继承Thread类,并重写run()方法来定义线程执行的任务。然后创建一个该类的对象并调用start()方法启动线程。

示例代码如下:

public class MyThread extends Thread {
    @Override
    public void run() {
        System.out.println("Thread is running");
    }
}

public class Main {
    public static void main(String[] args) {
        MyThread myThread = new MyThread();
        myThread.start();
    }
}

无论是实现Runnable接口还是继承Thread类,都可以创建线程。但通常推荐使用实现Runnable接口的方式,因为Java不支持多重继承,如果一个类已经继承了其他类,就无法再继承Thread类来创建线程,而实现Runnable接口则没有这个限制。