Java多线程编程详解
本文详细介绍了Java中的多线程编程,包括线程的基本概念、创建线程的方法以及一个简单案例讲解。
1. 多线程的基本概念
多线程编程是Java并发编程的基础。线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。一个进程可以包含多个线程,这些线程共享进程的内存空间。
2. 创建线程的方法
在Java中,创建线程主要有三种方法:
- 继承Thread类
- 实现Runnable接口
- 实现Callable接口(结合FutureTask使用)
2.1 继承Thread类
通过继承Thread类并重写其run方法,可以创建一个新的线程。
class MyThread extends Thread {
@Override
public void run() {
System.out.println("这是通过继承Thread类创建的线程");
}
}
public class Main {
public static void main(String[] args) {
MyThread myThread = new MyThread();
myThread.start();
}
}
2.2 实现Runnable接口
实现Runnable接口可以避免Java单继承的局限,更加灵活。
class MyRunnable implements Runnable {
@Override
public void run() {
System.out.println("这是通过实现Runnable接口创建的线程");
}
}
public class Main {
public static void main(String[] args) {
Thread thread = new Thread(new MyRunnable());
thread.start();
}
}
3. 案例讲解:多线程打印数字
下面是一个简单的案例,演示如何使用多线程打印数字。
class NumberPrinter implements Runnable {
private int start;
private int end;
public NumberPrinter(int start, int end) {
this.start = start;
this.end = end;
}
@Override
public void run() {
for (int i = start; i <= end; i++) {
System.out.println(Thread.currentThread().getName() + " 打印: " + i);
}
}
}
public class Main {
public static void main(String[] args) {
Thread thread1 = new Thread(new NumberPrinter(1, 5), "线程1");
Thread thread2 = new Thread(new NumberPrinter(6, 10), "线程2");
thread1.start();
thread2.start();
}
}
在这个例子中,我们创建了两个线程,分别打印1到5和6到10的数字。可以看到,线程的执行顺序是不确定的,这体现了多线程的并发特性。