多线程编程简介
多线程编程是Java编程中的一个重要概念,它允许程序同时执行多个任务。每个任务称为一个线程,线程是操作系统能够进行运算调度的最小单位。多线程编程可以提高程序的响应速度和运行效率,特别是在处理复杂任务或需要同时执行多个任务时。
创建线程的方式
在Java中,创建线程主要有两种方式:
- 继承Thread类:通过创建一个类继承Thread类,并重写其run()方法。
- 实现Runnable接口:通过创建一个类实现Runnable接口,并实现其run()方法,然后将该类的实例传递给Thread对象。
线程的生命周期
线程的生命周期包括以下几个状态:
- 新建(NEW):线程被创建但尚未启动。
- 就绪(RUNNABLE):线程可以被调度执行。
- 运行(RUNNING):线程正在执行。
- 阻塞(BLOCKED):线程被阻塞,等待监视器锁。
- 等待(WAITING):线程在等待另一个线程执行特定动作。
- 计时等待(TIMED_WAITING):线程在等待另一个线程执行特定动作,但有时间限制。
- 终止(TERMINATED):线程已执行完毕。
示例代码
// 实现Runnable接口
class MyRunnable implements Runnable {
private String threadName;
MyRunnable(String name) {
this.threadName = name;
}
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println(threadName + " - " + i);
try {
Thread.sleep(1000); // 休眠1秒
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(threadName + " exiting.");
}
}
public class MultiThreadExample {
public static void main(String[] args) {
MyRunnable myRunnable1 = new MyRunnable("Thread-1");
MyRunnable myRunnable2 = new MyRunnable("Thread-2");
Thread thread1 = new Thread(myRunnable1);
Thread thread2 = new Thread(myRunnable2);
thread1.start();
thread2.start();
try {
thread1.join(); // 等待thread1执行完毕
thread2.join(); // 等待thread2执行完毕
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Main thread exiting.");
}
}