JAVA中 终止线程的方法介绍

大胖子小昊

大胖子小昊

2016-02-19 11:05

下面图老师小编跟大家分享JAVA中 终止线程的方法介绍,一起来学习下过程究竟如何进行吧!喜欢就赶紧收藏起来哦~

在Java的多线程编程中,java.lang.Thread类型包含了一些列的方法start(), stop(), stop(Throwable) and suspend(), destroy() and resume()。通过这些方法,我们可以对线程进行方便的操作,但是这些方法中,只有start()方法得到了保留。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

在Sun公司的一篇文章《Why are Thread.stop, Thread.suspend and Thread.resume Deprecated? 》中详细讲解了舍弃这些方法的原因。

如果真的需要终止一个线程,可以使用以下几种方法:
1、让线程的run()方法执行完,线程自然结束。(这种方法最好)

2、通过轮询和共享标志位的方法来结束线程,例如while(flag){},flag的初始值设为真,当需要结束时,将flag的值设为false。(这种方法也不很好,因为如果while(flag){}方法阻塞了,则flag会失效)

代码如下:

public class SomeThread implements Runnable {

private volatile boolean stop = false;

public void terminate() {

stop = ture;

}

public void run() {

while(stop) {

// ... some statements

}

}

}

 

如果线程因为执行sleep()或是wait()而进入Not Runnable状态,假如是wait() 用标志位就方法就不行了,

public final void wait(long timeout)
                throws InterruptedException此方法导致当前线程(称之为 T)将其自身放置在对象的等待集中,然后放弃此对象上的所有同步要求。即当前线程变为等待状态

wait() 的标准使用方法

synchronized(obj){

while(不满足条件){

obj.wait();

}

满足条件的处理过程

}

而您想要停止它,您可以使用第三种即

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

3 使用interrupt(),而程式会丢出InterruptedException例外,因而使得执行绪离开run()方法,

例如:

 代码如下:

public class SomeThread {

public static void main(String[] args)

{

Thread thread=new Thread(new Runnable(){

public void run() {

 while (!Thread.interrupted()) {
                // 处理所要处理的工作
                try {
                   

System.out.println("go to sleep");

Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
               

System.out.println("i am interrupted!");
                }

});

thread.start();

thread.interrupt();

}

}

执行结果为:

go to sleep

i am interrupted!

展开更多 50%)
分享

猜你喜欢

JAVA中 终止线程的方法介绍

编程语言 网络编程
JAVA中 终止线程的方法介绍

java线程之join方法的使用介绍

编程语言 网络编程
java线程之join方法的使用介绍

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Java线程中sleep和wait的区别详细介绍

编程语言 网络编程
Java线程中sleep和wait的区别详细介绍

创建Java中的线程池

编程语言 网络编程
创建Java中的线程池

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Java 程序中的多线程

编程语言 网络编程
Java 程序中的多线程

java向多线程中传递参数的三种方法详细介绍

编程语言 网络编程
java向多线程中传递参数的三种方法详细介绍

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

怎样为PPT背景添彩

怎样为PPT背景添彩

doc怎么转换为XLS

doc怎么转换为XLS
下拉加载更多内容 ↓