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 线程教程。