首页 > 编程笔记 > Java笔记 阅读:24

Java创建线程的2种方式(附带实例)

Java 语言提供了 Thread 作为线程类,它位于 java.lang 包中。当我们的任务不能在当前线程中执行时就可以创建一个 Thread 对象,然后启动该线程去执行。

实际上定义线程有两种方式,一种是直接继承 java.lang.Thread 类,另一种则是实现 java.lang.Runnable 接口。

Thread 类是对 Java 线程的抽象,每个 Thread 对象都包含了各种属性,如线程优先级,也包含了各种操作,如启动操作。通常我们会使用如下的四个构造方法来创建线程对象:
public Thread()
public Thread(String name)
public Thread(Runnable target)
public Thread(Runnable target, String name)
其中的参数 name 为线程名。后面两个构造方法是第二种创建线程的方法,通过 Runnable 接口指定线程的任务。

下面我们来看看具体如何创建线程对象。
public class ThreadTest {
    public static void main(String[] args) {
      System.out.println(Thread.currentThread().getName());
      new MyThread().start();
      new Thread(new MyThread2()).start();
    }
}

class MyThread extends Thread {
    public void run() {
        System.out.println(Thread.currentThread().getName());
    }
}

class MyThread2 implements Runnable {
    public void run() {
        System.out.println(Thread.currentThread().getName());
    }
}
输出如下:

main
Thread-0
Thread-1

程序中包含了两种创建方法:
定义好线程类后就可以分别通过“new MyThread()”和“new Thread(new MyThread2())”来创建线程对象,然后调用 start() 方法即可启动线程。

可以看到一共有三个线程,第一个是名为 main 的主线程,后两个则是我们自定义创建的线程,它们的名字由 JDK 自动生成,也可以自行指定线程名传入构造方法。

我们还可以使用一种简化的方式来创建并启动一个新线程,即通过“new Thread(() -> {})”的方式,其中任务逻辑写在大括号内,如下面的代码所示。
public class ThreadTest2 {
    public static void main(String[] args) {
        System.out.println(Thread.currentThread().getName());
        new Thread(() -> {
            System.out.println(Thread.currentThread().getName());
        }).start();
    }
}
输出结果:

main
Thread-0

相关文章