在Java的多线程编程中,java.lang.Thread范例包含了一些列的要领start(), stop(), stop(Throwable) and suspend(), destroy() and resume()。经由过程这些要领,我们能够对线程举行轻易的操纵,然则这些要领中,只要start()要领得到了保存。
在JDK协助文档以及Sun公司的一篇文章《Why are Thread.stop, Thread.suspend and Thread.resume Deprecated? 》中都讲解了舍弃这些要领的缘由。
那末,我们终究应当怎样住手线程呢?
用同享变量的体式格局
在这类体式格局中,之所以引入同享变量,是因为该变量能够被多个实行雷同使命的线程用来作为是不是中断的信号,关照中断线程的实行。
public class ThreadFlag extends Thread { public volatile boolean exit = false; public void run() { while (!exit); } public static void main(String[] args) throws Exception { ThreadFlag thread = new ThreadFlag(); thread.start(); sleep(3000); // 主线程耽误3秒 thread.exit = true; // 停止线程thread thread.join(); System.out.println("线程退出!"); } }
在上面代码中定义了一个退出标志exit,当exit为true时,while轮回退出,exit的默认值为false。在定义exit时,使用了一个Java关键字volatile,这个关键字的目标是使exit同步,也就是说在统一时候只能由一个线程来修正exit的值。
以上就是java 怎样住手一个线程的细致内容,更多请关注ki4网别的相干文章!