java多线程如何停止一个线程 java多线程如何停止一个线程?如果一个线程被创建后,后天运行着很复杂的运算,很耗时间,但是,中途想把它停掉,请问有何方法???? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 中断线程的方法有很多,最简单的是直接调用stop()和subspend()方法,但是这两种方法并不推荐使用,因为它们有可能导致数据的不同步而发生死锁现象。如果真的需要终止一个线程,可以使用以下几种方法:1、让线程的run()方法执行完,线程自然结束。(这种方法最好)2、通过轮询和共享标志位的方法来结束线程,例如while(flag){},flag的初始值设为真,当需要结束时,将flag的值设为false。(这种方法也不很好,因为如果while(flag){}方法阻塞了,则flag会失效)3、通过调用interrupt方法和捕获InterruptedException异常来终止线程。实际上最好的方法是使用线程池,当线程不用了,就让它sleep并放进队列中,这样可以最大限度地利用资源。 线程很难控制。1楼解释得很详细了。其实最安全的结束线程方法是thread = null;不过这也需要等线程运行结束才起作用。在运行中似乎不能停止线程。 如果线程没有在执行会阻塞的方法时,一般可以不记他的运行时间。在这种情况下,线程如果循环运行,务必在循环条件加上Thread.currentThread().isInterrupted(),这样可以在每次循环开始时响应其它线程对它的interrupt操作。如果线程里在执行会阻塞的方法时,这些方法基本都可以自己以抛出异常的方式响应interrupt,你处理异常就可以了。 stop()已经过时了,好想只有阻塞,和 等待两种 如果是进行很复杂的计算的界面,比如用户在下载或者其他耗时间的动作,可以从新开个线程,让其在后台运行,而不是让当前线程运行,发现太耗时了,然后停止。如何停止线程,上面说的很清楚了,具体做法可以随便找本java基础教程的线程那章。 Java判断是否有连数,比如12,13,14 Array constants can only be used in initializers jsp前台验证问题,请高手帮忙~ struts在frameset框架里传数据问题 关于端口和速度 如何学习struts tomcat的安装与启动 求 中间件 相关资料做论文,或好的建议. 高分求救 正则表达式问题 项目mysql导Oracle无法连接,求大佬解答 数据库连接问题~~~~~~~~~~ 经典探讨
1、让线程的run()方法执行完,线程自然结束。(这种方法最好)
2、通过轮询和共享标志位的方法来结束线程,例如while(flag){},flag的初始值设为真,当需要结束时,将flag的值设为false。(这种方法也不很好,因为如果while(flag){}方法阻塞了,则flag会失效)
3、通过调用interrupt方法和捕获InterruptedException异常来终止线程。实际上最好的方法是使用线程池,当线程不用了,就让它sleep并放进队列中,这样可以最大限度地利用资源。
thread = null;
不过这也需要等线程运行结束才起作用。在运行中似乎不能停止线程。
如果线程里在执行会阻塞的方法时,这些方法基本都可以自己以抛出异常的方式响应interrupt,你处理异常就可以了。