在Java中,能够应用以下几种形式来创立线程:

1、继承Thread类:能够创立一个类,继承java.lang.Thread类,并重写run()办法来定义线程代码。而后,能够创立一个新的Thread对象,并调用start()办法来启动线程

class MyThread extends Thread {    public void run() {        // 线程代码    }}// 创立新线程并启动MyThread thread = new MyThread();thread.start();

2、实现Runnable接口:能够创立一个类,实现java.lang.Runnable接口,并实现run()办法来定义线程代码。而后,能够创立一个新的Thread对象,并将Runnable实例传递给Thread构造函数。

class MyRunnable implements Runnable {    public void run() {        // 线程代码    }}// 创立新线程并启动MyRunnable runnable = new MyRunnable();Thread thread = new Thread(runnable);thread.start();

3、实现Callable接口:能够创立一个类,实现java.util.concurrent.Callable接口,并实现call办法来定义线程代码。而后,能够创立一个新的Thread对象,并将Runnable实例传递给Thread构造函数。

import java.util.concurrent.*;class MyCallable implements Callable<Integer> {    public Integer call() throws Exception {        int sum = 0;        for (int i = 1; i <= 10; i++) {            sum += i;        }        return sum;    }}public class Main {    public static void main(String[] args) {        // 创立线程池        ExecutorService executor = Executors.newSingleThreadExecutor();        // 提交可调用工作        Future<Integer> future = executor.submit(new MyCallable());        try {            // 期待计算实现并获取后果            int result = future.get();            System.out.println("后果:" + result);        } catch (InterruptedException e) {            e.printStackTrace();        } catch (ExecutionException e) {            e.printStackTrace();        }        // 敞开线程池        executor.shutdown();    }}

4、应用匿名外部类:能够应用匿名外部类来创立线程,防止创立多个类。能够在Thread构造函数中传递一个Runnable对象的匿名外部类来定义线程代码。

// 创立新线程并启动Thread thread = new Thread(new Runnable() {    public void run() {        // 线程代码    }});thread.start();

5、应用Lambda表达式:能够应用Lambda表达式来创立线程,防止创立多个类。能够在Thread构造函数中传递一个Runnable对象的Lambda表达式来定义线程代码。

// 创立新线程并启动Thread thread = new Thread(() -> {    // 线程代码});thread.start();