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

如何停止新线程(new Runnable())[duplicate]

司空朝
2023-03-14
      new Thread(new Runnable() {
         @Override public void run() {
             Log.e("MotionLogger", "SU");
             Log.i(TAG, "click " + Thread.currentThread().toString());

             try {
                 finalCommandLine.writeBytes(command.toString() + '\n');
                 finalCommandLine.writeBytes("exit\n");
                 finalCommandLine.flush();
                 finalCommandLine.close();
                 finalSuShell.waitFor();
             } catch (IOException e1) {
                 e1.printStackTrace();
             } catch (InterruptedException e1) {
                 e1.printStackTrace();
             }
         }

     }).start();

提前致谢:)

共有1个答案

孙书
2023-03-14

在您的情况下,可以使用Thread.Interrupt

如果要在UI线程上运行,则可以创建这样的处理程序

Handler handler= new Handler();

然后像这样创建Runnable

Runnable runnable= new Runnable() {
        public void run() {
            //do your work here
        }
    };
//start like this
runnable.run();
//stop like this
handler.removeCallbacks(runnable);
 类似资料:
  • 我通过创建固定数量的线程来使用执行器服务来进行HTTP GET数据检索。 当Tomcat停止时,我们会出现以下错误: 严重:web应用程序[/viewer]似乎已启动名为[ThreadExecutor_51616156]的线程,但未能停止该线程。这很可能会造成内存泄漏。 这是真的吗?在没有这些服务错误的情况下,如何正确停止tomcat。

  • 问题内容: 我已经用GUI制作了一个Java程序,并且想要一个停止按钮功能,其中当用户单击停止按钮时,必须停止该程序。 在我的程序中,主线程启动其他10个线程,我希望每当单击“停止”按钮时,所有10个线程都必须在主线程之前停止。 其次,我还希望每当停止这10个线程中的任何一个线程时,它都必须先关闭它打开的所有资源,然后再连接数据库等。 我已经实现了.......回答的代码。 现在有一个问题。 我的

  • 对不起,老问题。我已经澄清了。我如何用我可怜的线程类开始停止线程? 编辑:它在循环中,我想在代码开头再次重新启动它。我如何启动停止重新启动? 我的班级: 在主代码中,我希望:

  • 代码非常简单,我搜索了一下,发现我只会用到 这似乎不起作用,我也尝试过使用平台参数,比如 下面是您可以运行的测试应用程序: 锁定得可拥有同步器:-无 更新:我正在Linux Fedora 16 64bit上使用最新的Oracle JDK 7u17 64bit。

  • 我有一个简单的控制台应用程序,有时需要执行图形操作,对于那些我使用JavaFx框架(有一些功能,我需要像css样式的文本)我只是生成一些形状和文本到一个隐藏的场景,然后保存在文件中仅此而已, 我知道要使用JavaFx,我必须将图形操作传递给JavaFx线程,但是当一切都完成后,我必须关闭应用程序(几个小时后),这个JavaFx线程仍然保持打开...我真的不想强行退出System.exit(),因为

  • 问题内容: 我写了一个线程,它花费太多时间执行,而且似乎还没有完全完成。我想优雅地停止线程。有什么帮助吗? 问题答案: 做到这一点的好方法是让一个线程保护一个Thread的变量,并在你要停止它的时候将其设置为外部变量,例如: `class MyThread extends Thread { volatile boolean finished = false; public void stopMe(