JAVA线程停止的最佳实践
1. 错误的停止方式:两种常见错误
2. 正确的停止方式:如何使用interrupt
开始容易,结束难。形容线程再合适不过了。关于线程停止这块,东西很多,众说纷纭,今天就来梳理下,线程停止的最佳实践。
错误的停止方式
首先简要了解下常见的错误停止方式,以及错在哪里。
这里的错误并不是绝对的错误。可能某些情况下,它依旧能够符合程序运行的期望,但并不能很好的处理所有情况。这里把健壮性不够的方法都归到错误的方法。
1. stop()
假设一个场景,开启一个子线程来模拟银行排队取钱,每个人都取1W元。流程是,柜员先把你银行卡的1W元划掉,然后分10次每次给你1000元。
private static Runnable runnable = () -> {
try {
while (true) {
System.out.println("从银行卡扣掉此人1W元");
for (int j = 1; j < 11; j++) {
System.out.println("给了" + 1000 * j);
//等待印钞机印钱
Thread.sleep(10);
}
}
} catch (InterruptedException e) {
e.printStackTrace();
}
};
public static void main