Java 线程是 Java 程序中执行任务的基本单位。线程可以让多个任务并发执行,从而提高程序的效率。

线程状态

Java 线程有几种状态,包括:

  • 新建 (New): 线程对象被创建后处于该状态。
  • 可运行 (Runnable): 线程获得 CPU 资源,开始执行。
  • 阻塞 (Blocked): 线程因为某些原因无法获得 CPU 资源,进入阻塞状态。
  • 等待 (Waiting): 线程调用了 Object.wait() 方法,进入等待状态。
  • 超时等待 (Timed Waiting): 线程调用了 Object.wait(long timeout)Thread.sleep(long millisecond) 方法,进入超时等待状态。
  • 终止 (Terminated): 线程执行完毕或被其他线程强制终止。

创建线程

Java 中创建线程主要有两种方式:

1. 继承 Thread 类

public class MyThread extends Thread {
    @Override
    public void run() {
        // 线程执行的代码
    }
}

2. 实现 Runnable 接口

public class MyRunnable implements Runnable {
    @Override
    public void run() {
        // 线程执行的代码
    }
}

线程同步

当多个线程访问共享资源时,需要保证线程同步,以避免数据不一致的问题。

同步方法

public synchronized void method() {
    // 同步代码块
}

同步代码块

public void method() {
    synchronized (this) {
        // 同步代码块
    }
}

线程通信

Java 线程之间可以通过 wait()notify()notifyAll() 方法进行通信。

  • wait():使当前线程等待,直到另一个线程调用 notify()notifyAll() 方法。
  • notify():唤醒一个等待的线程。
  • notifyAll():唤醒所有等待的线程。

实例:多线程打印数字

public class PrintNumber implements Runnable {
    private int number = 1;

    @Override
    public void run() {
        while (number <= 100) {
            synchronized (this) {
                System.out.println(Thread.currentThread().getName() + ": " + number);
                number++;
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

更多关于 Java 线程的知识,请访问Java 线程教程