Java中的线程(Thread)是程序中独立执行的最小单位,它可以并发执行不同的任务,从而提高程序的处理能力。线程可以在同一个进程中并发执行多个任务,这些任务可以共享进程的资源(例如内存空间),因此线程间的通信和数据共享也比较容易实现。Java中提供了丰富的线程API和机制,使得开发者可以方便地使用线程实现多线程编程。
Java中创建线程的常用方式有两种:
继承Thread类并重写run()方法
public class MyThread extends Thread {
@Override
public void run() {
// 执行线程的任务
}
}
public class Main {
public static void main(String[] args) {
MyThread thread = new MyThread();
thread.start();
}
}
实现Runnable接口并重写run()方法
public class MyRunnable implements Runnable {
@Override
public void run() {
// 执行线程的任务
}
}
public class Main {
public static void main(String[] args) {
MyRunnable runnable = new MyRunnable();
Thread thread = new Thread(runnable);
thread.start();
}
}
在上面的代码示例中,MyThread和MyRunnable分别继承了Thread类和实现了Runnable接口,并在run()方法中实现了线程的具体任务。在主函数中,我们创建了一个MyThread对象或MyRunnable对象,并通过调用start()方法来启动线程。
在Java中,线程的状态包括NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING和TERMINATED六种。当线程刚刚创建时,它的状态为NEW;当线程调用start()方法后,它的状态变为RUNNABLE;当线程在等待某个锁的时候,它的状态为BLOCKED;当线程在等待其他线程执行某个操作时,它的状态为WAITING;当线程在等待一段时间后自动恢复运行时,它的状态为TIMED_WAITING;当线程执行完任务或者因为异常退出时,它的状态为TERMINATED。
Java中的线程API还提供了许多有用的方法,例如: