2. 使用stop方法强行终止线程(这个方法不推荐使用,因为stop和suspend、resume一样,也可能发生不可预料的结果)。
3. 使用interrupt方法中断线程。
1. 使用退出标志终止线程
当run方法执行完后,线程就会退出。但有时run方法是永远不会结束的。如在服务端兆知侍程序中使用线程进行监听客户端请求,或是其他的需要循环处理的任务。在这种情况下,一般是将这些任务放在一个循环中,如while循环。如果想让循环永远运行下去,可以使用while(true){……}来处理。但要想使while循环在某一特定条件下退出,最直接的方法就是设一个boolean类型的标志,并通过设置这个标志为true或false来控制while循环是否退出。下面给出了一个利用退出标志终族吵止线程的例子。
stop()已过时。
该方法具有固有的不安全性。用
Thread.stop
来终止线程将释放它已经锁定的所有监视器(作为沿堆栈向上传播的未检查
ThreadDeath
异常的一个自然后果)。如果以前受这些监视器保护的任何对象都处于一种不一致的状态,则损坏的对象将对其他线程可见,这有可能导致任意的行为。stop
的许多使用都应由只修改某些变量以弯山扒指示目标线程应埋昌该停止运行的代码来取代。目标线程应定期检查该变量,并且如果该变量指示它要唯宽停止运行,则从其运行方法依次返回。如果目标线程等待很长时间(例如基于一个条件变量),则应使用
interrupt
方法来中断该等待。有关更多信息,请参阅为何不赞成使用
Thread.stop、Thread.suspend
和
Thread.resume?。
JAVA
API中的描述是
Thread类的
在Java的多线程编程中,java.lang.Thread类型包含了一些圆困列的方法start(),stop(),stop(Throwable)andsuspend(),destroy()andresume()。
通过这些方法,我们可以对线程进行方便的 *** 作,但是这些方法中,只有start()方法得到了保留。
本文是海文国际小编搜索整理的关于JAVA中终止线程的方法,供参考复习,希望对大家有所帮助!如察腔哗果真的需要终止一个线程,可以使用以下几种方法:1、让线程的run()方法执行完,线程自然结束。
(这种方法最好)2、通过轮询和共享标志位的方法来结束线程,例如while(flag){},flag的初始值设为真,当需要结束时,java课程培训机构http://www.kmbdqn.cn/建议将flag的值设为false。
(这种方法也不很好,因为如果while(flag){}方法败行阻塞了,则flag会失效)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)