mydy.net
当前位置:首页 >> jAvA多线程,怎么让一个线程中断并关闭 >>

jAvA多线程,怎么让一个线程中断并关闭

设置一个布尔型变量flg while(flg)

java.util.concurrent.countdownlatch 这个类可以实现你所要的功能 例如:countdownlatch latch = new countdownlatch(5) //声明计数器为5个 thread t = new thread() { public void run() { try { //todo 你的应用 } catch (exception e) { //todo 异常处理 } finally

中断(Interrupt)一个线程意味着在该线程完成任务之前停止其正在进行的一切,有效地中止其当前的操作.线程是死亡、还是等待新的任务或是继续运行至下一步,就取决于这个程序.虽然初次看来它可能显得简单,但是,你必须进行一些预警以实现期望的结果.你最好还是牢记以下的告诫.首先,忘掉Thread.stop方法.虽然它确实停止了一个正在运行的线程,然而,这种方法是不安全也是不受提倡的,这意味着,在未来的JAVA版本中,它将不复存在.中断线程最好的,最受推荐的方式是,使用共享变量(shared variable)发出信号,告诉线程必须停止正在运行的任务.线程必须周期性的核查这一变量(尤其在冗余操作期间),然后有秩序地中止任务.

设置一个布尔变量,控制循环.当需要结束时让布尔变量的值为false,而不要强制终结这个进程否则容易造成死锁

有三种方法可以使终止线程. 1. 使用退出标志,使线程正常退出,也就是当run方法完成后线程终止. 2. 使用stop方法强行终止线程(这个方法不推荐使用,因为stop和suspend、resume一样,也可能发生不可预料的结果). 3. 使用interrupt

ThreadDemo a=new ThreadDemo(); 要结束的时候调用 a.setXXX(); 就可以了.. 完毕.

新建一个线程,一直循环,每隔5分钟调用那6个Tread的isAlive()方法进行判断,如果返回为false则调用它们的start()方法.

有两个办法, 一是你可以控制想中断的线程的实例, 然后调用修改这个实例的一个自己定义的running变量, 让run方法返回即可中断.二是给线程起个名字, 就是new Thread("threadName"), 然后判断当前线程是不是你想要的, 再调用interrupt方法, 捕获异常退出,不过第二个方法感觉不是很好

系统内建HASHMAP,在生成线程的时候分配ID为KEY,并将该线程存入该HASHMAP,当需要停止时,从HASHMAP中根据该ID取出线程的引用,并停止,这样应该能够实现你的要求~

从你的应用场景来看,你的这个需求根本不需要那个管理线程啊,只需要两个线程和一个数据缓存链.线程1:图片采集线程,不停的采集数据,放到数据链里缓存线程2:数据处理线程,不停的从数据链里面取数据处理.

网站首页 | 网站地图
All rights reserved Powered by www.mydy.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com