Java 多线程(一)—— 线程的创建与属性
在现代的应用程序中,为了提高性能和响应速度,多线程编程是一种常见的技术。Java 提供了丰富的支持来创建和管理线程。本文将简要介绍在 Java 中如何创建线程以及线程的基本属性。
一、线程的创建
在 Java 中,有两种主要方式可以创建线程:继承 Thread
类和实现 Runnable
接口。
1. 继承 Thread
类
通过继承 Thread
类,我们可以重写 run()
方法来定义线程执行的任务。创建线程的步骤如下:
class MyThread extends Thread {
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println(Thread.currentThread().getName() + " 计数: " + i);
}
}
public static void main(String[] args) {
MyThread thread1 = new MyThread();
MyThread thread2 = new MyThread();
thread1.start(); // 启动线程1
thread2.start(); // 启动线程2
}
}
在这个示例中,我们创建了一个名为 MyThread
的线程,重写了 run()
方法并在其中打印线程名和计数。通过调用 start()
方法来启动线程,JVM 会自动调用 run()
方法。
2. 实现 Runnable
接口
另一种创建线程的方式是实现 Runnable
接口。这种方式的优点在于可以让我们的类继承自其他类。以下是实现 Runnable
接口的示例:
class MyRunnable implements Runnable {
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println(Thread.currentThread().getName() + " 计数: " + i);
}
}
public static void main(String[] args) {
MyRunnable myRunnable = new MyRunnable();
Thread thread1 = new Thread(myRunnable);
Thread thread2 = new Thread(myRunnable);
thread1.start(); // 启动线程1
thread2.start(); // 启动线程2
}
}
在这个示例中,我们定义了一个实现了 Runnable
接口的类 MyRunnable
,并在 run()
方法中写入了线程执行的代码。然后在 main
方法中,我们创建了两个线程,并分别启动它们。
二、线程的属性
1. 线程的名称
每个线程都有一个名称,可以通过 Thread
类的 getName()
方法获取,并可以通过构造函数设置线程名称。例:
Thread thread = new Thread(myRunnable, "MyThread");
System.out.println(thread.getName()); // 输出:MyThread
2. 线程的优先级
Java 中的线程可以设置优先级。线程的优先级取值范围从 1
到 10
,可以通过 setPriority(int priority)
方法设置,默认优先级为 5
。
thread1.setPriority(Thread.MAX_PRIORITY); // 设置为最大优先级
thread2.setPriority(Thread.MIN_PRIORITY); // 设置为最小优先级
3. 线程的状态
线程在执行过程中会经历不同的状态,包括新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)、等待(Waiting)、超时等待(Timed Waiting)和死亡(Terminated)。可以通过 Thread
类的方法来获取线程的状态。
总结
多线程编程是 Java 中处理并发任务的重要手段。通过继承 Thread
类或实现 Runnable
接口,我们可以轻松创建线程并设置线程的基本属性。了解线程的创建与属性是掌握 Java 多线程编程的基础。在后续的文章中,我们将继续探讨线程的同步、通信等更深入的内容。