陶仨儿 2013-12-09 17:04
浏览 228
已采纳

我只好到这里问问题了,关于java多线程,已经怎样关线程

我有个类继承了Jpanle,这个类里有自动创建线程的方法,
而我新new这个类的时候原来的线程还存在。
我不断new结果是线程只增不减
问题就出来了,原来线程还在运行,导致显示出的效果非常差劲

原来是多线程并发,我想关闭原来所有运行的线程

  • 写回答

1条回答 默认 最新

  • J.hao 2013-12-09 17:43
    关注

    首先,所谓关闭线程其实就是让Thread.run方法能正常结束,方法结束则线程会自动退出。
    很多程序会在run中执行一个死循环以达到守护线程的效果,在这种情况下如果你希望线程退出,那么比较好的方式就是想办法告诉这个循环“你可以退出了”
    比如:
    private boolean isBreak = false;

    public void run()
    {
    while(true){
    if(isBreak ){break;}
    //dosomething...
    }
    }

    public void killThread(){
    isBreak = true;
    }

    这种设置变量的方式是最直观的,当然,其实可以不用额外变量而使用thread.isInterrupted()方法来判定当前线程是否被中断,外部调用thread.interrupt,来告诉线程“你被中断了”

    此外,如果你选择在外部调用interrupt,而你的run方法中有xxx.wait()或sleep()等方法,那么需要对InterruptedException进行处理。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 安装powerbuilder10卡在安装程序正在运行这个页面 没有下一步任何指令
  • ¥50 微信聊天记录备份到电脑提示成功了,但还是没同步到电脑微信
  • ¥15 python怎么在已有视频文件后添加新帧
  • ¥20 虚幻UE引擎如何让多个同一个蓝图的NPC执行一样的动画,
  • ¥15 fluent里模拟降膜反应的UDF编写
  • ¥15 MYSQL 多表拼接link
  • ¥15 关于某款2.13寸墨水屏的问题
  • ¥15 obsidian的中文层级自动编号
  • ¥15 同一个网口一个电脑连接有网,另一个电脑连接没网
  • ¥15 神经网络模型一直不能上GPU