Java线程停止的方法有以下几种:
1. 使用标志位:在Thread类中定义一个boolean类型的变量作为标志位,当标志位为true时,线程执行完当前任务后退出循环,从而停止线程。
```java
public class MyThread extends Thread {
private boolean flag = true;
@Override
public void run() {
while (flag) {
// 线程执行的任务
}
}
public void stopThread() {
flag = false;
}
}
```
可以通过调用stopThread()方法设置标志位为false,从而停止线程。
2. 使用interrupt()方法:调用线程的interrupt()方法,可以中断线程的执行。线程在执行过程中可以通过检查自身是否被中断来判断是否停止执行。
```java
public class MyThread extends Thread {
@Override
public void run() {
while (!Thread.interrupted()) {
// 线程执行的任务
}
}
}
```
可以通过调用interrupt()方法中断线程。
3. 使用stop()方法(已废弃):stop()方法是Thread类中的方法,可以直接停止线程的执行。但该方法已被废弃,不推荐使用,因为会导致线程的不可预期状态,可能会造成资源的泄漏或数据的不一致。
```java
public class MyThread extends Thread {
@Override
public void run() {
while (true) {
// 线程执行的任务
}
}
}
```
可以通过调用stop()方法停止线程,但不推荐使用。
4. 使用Thread.interrupt()和isInterrupted()方法:通过调用Thread.interrupt()方法中断线程,并通过isInterrupted()方法判断线程是否被中断。
```java
public class MyThread extends Thread {
@Override
public void run() {
while (!isInterrupted()) {
// 线程执行的任务
}
}
}
```
可以通过调用interrupt()方法中断线程,并通过isInterrupted()方法判断线程是否被中断。
总体来说,推荐使用标志位或interrupt()方法来停止线程,而不推荐使用stop()方法。