线程的启动和停止
不建议使用stop方法太过暴力。
1)而是使用interrupt()方法,可以优雅的的停止一个线程。
2)通过指令的方式,volatile boolean isStop =false;通过公用的指令来停止线程。
第一种中断方式:
/**
* FileName : ThreadInterruptDemo
* Package : com.xiaoxiaohou.thread
*
* @author : Brad Delson ( A Drummer)
* Date : 2019/7/6
* Description : TODO
* Version 1.0
*/
package com.xiaoxiaohou.thread;
import java.util.concurrent.TimeUnit;
/**
*@FileName : ThreadInterruptDemo
*@PackageName : com.xiaoxiaohou.thread
*@Description :
*@Author :Brad Delson ( A Drummer)
*@DATE :2019/7/6
*/
public class ThreadInterruptDemo{
public static void main(String[] args) {
Thread thread = new Thread(()->{
while(true){
boolean in = Thread.currentThread().isInterrupted();
if(in){
System.out.println("before:" +in);
Thread.interrupted();//在这里进行复位。
System.out.println("after:" +Thread.currentThread().isInterrupted());
}
}
});
thread.start();
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
thread.interrupt();
}
}
第二种中断方式:
/**
* FileName : ThreadInterruptDemo
* Package : com.xiaoxiaohou.thread
*
* @author : Brad Delson ( A Drummer)
* Date : 2019/7/6
* Description : TODO
* Version 1.0
*/
package com.xiaoxiaohou.thread;
import java.util.concurrent.TimeUnit;
/**
* @FileName : ThreadInterruptDemo
* @PackageName : com.xiaoxiaohou.thread
* @Description :
* @Author :Brad Delson ( A Drummer)
* @DATE :2019/7/6
*/
public class ThreadInterruptDemo {
public static void main(String[] args) {
Thread thread = new Thread(() -> {
while (true) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
thread.start();
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
thread.interrupt();
System.out.println("before :" + thread.isInterrupted());
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("after :" + thread.isInterrupted());
}
}