当前位置: 首页 > 知识库问答 >
问题:

Android java线程没有停止

缪宪
2023-03-14

我的android应用程序中有一个线程完成了它的任务,但它仍然没有退出,当我再次运行它时,我得到一个错误,即线程已经激活

我的线程

    Thread mythreads = new Thread()
    {
        @Override
        public void run() {
       // do some work

       // exit point      
}
};

所以请问我如何停止这个甚至线程完成它的代码执行,但是当我尝试再次运行它时,它给了我错误

java.lang.IllegalThreadStateException: Thread already started

我试图用threadkill函数代码停止,但没有成功

public void killthread(Thread tname){
    try {
        if (tname.isAlive()) {
            Log.d("tag1","Thread is Alive");
            tname.interrupt();
            tname = null;
        }
    }catch (Exception e){
        e.printStackTrace();
    }
}

共有1个答案

王经赋
2023-03-14

线程对象只能启动一次。如果您需要< code >停止/中断一个< code >线程,然后想要再次启动它,您应该创建一个新的实例,并对它调用< code>start():

thread.interrupt();
thread = new YourThreadSubclass();
thread.start();

在您的情况下,您正在执行线程mythreads = new Thread(),因此除非您在完成执行之前明确尝试停止它,否则它根本不应该成为问题。

创建匿名线程

new Thread()
{
    public void run() {
        //Your code
    }
}.start();
 类似资料:
  • 我有一个python脚本,所以我在python中使用线程模块并发执行。 def run(self):db=MySQLdb。connect('localhost','mytable','user','mytable')游标=db。cursor()query=“dig short”str(反向ip)”按键try:output=子进程。检查\u输出(查询,shell=True)输出\u编辑=输出。条带(

  • 本文向大家介绍C#程序暂停线程,包括了C#程序暂停线程的使用技巧和注意事项,需要的朋友参考一下 要在C#中暂停线程,请使用方法。 您需要设置线程要暂停的毫秒数,例如5秒钟,请使用- 示例 让我们看看如何循环并设置sleep方法来暂停线程。 输出结果

  • 问题内容: 我正在编写一段连接到服务器的代码,使用该连接会生成一堆线程并执行一堆“工作”。 在某些情况下,连接失败,我需要停止所有操作并从头开始创建新对象。 我想在对象之后进行清理,但在线程上调用thread.stop,但是此方法似乎已被弃用。 推荐的替代方法是什么?是否应该为每个线程编写自己的清理和退出方法?将线程设置为null?或者是其他东西? 问题答案: 看这里 : 在HowToStopAT

  • 问题内容: 如果我有这样的Java代码: 并在调试中运行它,我可以看到所有这些线程(在取消之后)仍在运行,所以它们也占用了我的内存吗?如果是的话,我怎么能完全销毁那些线程? 问题答案: 调用您的线程,仅此而已。因此,您需要在您的方法中正确处理它。对于您的简单情况,您的线程将完成其执行,并且它们的对象将由GC清除。

  • 我正在写一个小的多线程超文本传输协议文件下载程序,并希望能够缩小可用的线程,因为代码遇到错误 这些错误将特定于在web服务器不允许任何更多连接的情况下返回的http错误 eg.如果我设置了一个由5个线程组成的池,每个线程都试图打开自己的连接并下载文件块。服务器可能只允许2个连接,我相信会返回503个错误,我想检测到这一点并关闭一个线程,最终限制池的大小,大概只有服务器允许的2个 我能让线自动停止吗

  • 我是z3和java的初学者,现在已经尝试安装了相当长的一段时间。我已经按照http://leodemoura.github.io/blog/2012/12/10/z3-for-java.html上给出的所有说明进行了操作,直到最后一步,即运行- “ld_library_path=.java-cp com.microsoft.z3.jar:.javaexample”(在Linux和FreeBSD上)

  • 我使用 C 和 POSIX 线程创建了一个多线程应用程序。我现在应该阻塞一个线程(主线程),直到设置了布尔标志(变为真)。 我找到了两种方法来完成这件事。 > 在没有睡眠的情况下旋转。 在睡眠中旋转循环。 如果我应该遵循第一种方式,为什么有些人编写代码遵循第二种方式?如果应该使用第二种方法,为什么要让当前线程Hibernate呢?这种方式的缺点是什么?