当我们创建了一个线程对象后,可以通过调用start()方法启动该线程。在Java多线程编程中,我们通常使用继承Thread类或实现Runnable接口的方式来创建一个线程。下面我将详细介绍线程的启动、中断和终止操作。
启动线程
继承Thread类的方式
- 创建Thread类的子类,重写它的run()方法;
- 创建该子类的实例;
- 调用该实例的start()方法以启动该子线程;
class MyThread extends Thread {
@Override
public void run() {
// 线程执行的逻辑代码
}
}
public class Test {
public static void main(String[] args) {
MyThread myThread = new MyThread();
myThread.start();
}
}
实现Runnable接口的方式
- 创建实现Runnable接口的类,并实现该接口中的run()方法;
- 创建该Runnable实现类的实例;
- 创建Thread类的实例,将该Runable实现类的实例作为参数传递到该Thread实例中;
- 调用该Thread实例的start()方法以启动该线程。
class MyRunnable implements Runnable {
@Override
public void run() {
// 线程执行的逻辑代码
}
}
public class Test {
public static void main(String[] args) {
MyRunnable myRunnable = new MyRunnable();
Thread thread = new Thread(myRunnable);
thread.start();
}
}
中断线程
可以通过调用Thread类中的interrupt()方法来中断线程。在Java中,线程的中断是一种协作机制。当一个线程调用了另一个线程的interrupt()方法时,另一个线程会收到一个中断标志。通过判断该标志,线程可以决定是否终止它的执行。
public class MyThread extends Thread {
@Override
public void run() {
while (!Thread.currentThread().isInterrupted()) {
// 线程执行的逻辑代码
}
System.out.println("Thread is interrupted!");
}
}
public class Test {
public static void main(String[] args) throws InterruptedException {
MyThread myThread = new MyThread();
myThread.start();
TimeUnit.SECONDS.sleep(10);
myThread.interrupt();
}
}
终止线程
除了通过中断来终止线程之外,也可以通过设置一个标志变量来终止线程的执行。在该线程执行的过程中,不断检测该标志变量,一旦标志变量为true,线程即配合结束其执行。
public class MyThread extends Thread {
private volatile boolean stopFlag = false;
@Override
public void run() {
while (!stopFlag) {
// 线程执行的逻辑代码
}
System.out.println("Thread is stopped!");
}
public void stopThread() {
stopFlag = true;
}
}
public class Test {
public static void main(String[] args) throws InterruptedException {
MyThread myThread = new MyThread();
myThread.start();
TimeUnit.SECONDS.sleep(10);
myThread.stopThread();
}
}
以上就是Java多线程编程中线程的启动、中断或终止操作的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Java多线程编程中线程的启动、中断或终止操作 - Python技术站