陶仨儿 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 解决一个加好友限制问题 或者有好的方案
  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥30 求解达问题(有红包)