Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在java中终止父线程中的子线程

在java中终止父线程中的子线程
EN

Stack Overflow用户
提问于 2013-06-15 11:40:14
回答 5查看 12.2K关注 0票数 3

我在java android平台工作。我正在从主线程创建一个子线程。我想按我的要求停止子线程。我的子线程有一个简单的函数,它没有任何循环。我想要在我想要的时候杀死子线程并释放它正在使用的资源。我搜索了一下,发现了inturrupt()函数。我的主题是:

代码语言:javascript
运行
AI代码解释
复制
public class childThread implements Runnable{
  public void run() {
     firstFunction();
     secondFunction();
    }
}

主线程有以下代码来启动线程:

代码语言:javascript
运行
AI代码解释
复制
Thread tChild;
tChild = new Thread(new childThread(), "Child Thread");
tChild.start();

我的run()函数是这样调用函数的。如何在其中使用interrupt()?请告诉我杀除子线程和释放其资源的任何其他方法。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-06-15 12:28:00

通过线程的协作,您可以使用该线程支持的任何方法停止该线程。没有线程的合作,就没有合理的方法来阻止它。例如,假设线程持有锁并将共享资源置于无效状态。如果没有它的配合,你怎么能停止这个线程呢?

您有两个选择:

  1. 为您的线程编写代码,这样它们就不会执行您不希望它们执行的工作。对它们进行编码,以便它们在无事可做时自行终止。这样,它们就不需要其他线程来从外部“到达”。
  2. 对您的线程进行编码,以便它们提供某种方式来告知它们应该终止,然后干净利落地终止。

但这些都是你的选择--它不能靠魔法工作。

想象一个线程做工作,就像你的姐姐借你的车一样。如果你想要回你的车,你需要你姐姐的合作才能把它拿回来。你可以安排她在你需要车的时候自己回来,或者你可以安排你告诉她你什么时候需要车,然后她回来。但你不能改变这样一个事实,那就是她必须知道如何把车开回来,否则车就开不回来了。

线程操纵进程资源,并将它们置于无效状态。它们必须在终止之前进行修复,否则流程上下文将被破坏。

票数 5
EN

Stack Overflow用户

发布于 2013-06-15 12:05:49

由于您没有任何循环,其中检查Thread.interrupted()值,我假设您的firstFunction();secondFunction();做了大量工作,您将不得不在函数firstFunction();secondFunction();条件Thread.interrupted()中检查适当的点,如果为真,则结束该方法。我知道你没有循环,但概念上应该是这样的,

代码语言:javascript
运行
AI代码解释
复制
    Runnable runnable = new Runnable() {
      private int counter;

      public void run() {
        while(true){
          System.out.println(">> Executing " + counter++);

          if(Thread.interrupted()){
            break;
          }
        }

      }
    };

    Thread thread = new Thread(runnable);
    thread.start();

    Thread.sleep(10 * 1000);

    thread.interrupt();
票数 2
EN

Stack Overflow用户

发布于 2013-06-15 11:47:01

您的子线程将需要定期检查Thread.interrupted(),如果返回true,则退出。

你的代码是否有循环并不重要。您只需选择代码执行路径中的各个点,看看是否需要取消。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17123245

复制
相关文章
我都服了,为啥上游接口返回的汉字总是乱码?
想必大家编写代码时肯定和我一样,也遇到过汉字乱码的问题。特别是,有时候和上下游对接接口,不能统一编码格式的话,一堆乱码问题,让人头皮发麻。
烟雨星空
2021/09/14
1.7K0
我都服了,为啥上游接口返回的汉字总是乱码?
数组……Geez,我总是弄混
来来回回已经碰到这问题不知道多少次了,但每过一段时间总得把它弄混。郁闷啊。还是得记下来才行,不然每次都翻规范太痛苦了。
用户7886150
2020/12/12
7770
微信公众号msgSecCheck接口总是返回{
首先遇到报错{'errcode': 47001, 'errmsg': 'data format error rid: 60ac6d57-058e8ba0-3fa910cf'}
SingYi
2022/07/13
1.1K0
微信公众号msgSecCheck接口总是返回{
[android] sharedPreference入门
/********************2016年5月6日 更新**************************************/
唯一Chat
2019/09/10
4710
[android] sharedPreference入门
WordPress 内置的用于接口返回默认值的函数大全
在开发 WordPress 插件的时候,其中的一部分工作就是对接 WordPress 的 filter(过滤器),而 WordPress 很多 filter 其实是简单的开关型 filter,使用的时候可能只需要返回 false / true,还有一些只需要返回空的数据,比如 0,空字符或者空数组等。
Denis
2023/04/13
6130
SharedPreference 的commit和apply
SharedPreference是Android开发中经常用到的一个数据持久化类, 我们可以把一些需要持久化的数据放到一个指定的 Preference文件中,并持久化到磁盘上以xml形式存储起来。 这个xml文件对于开发者来说基本算是透明的,开发者只需要面对 Preference 所需要的文件名。
PhoenixZheng
2018/08/07
1.3K0
request.getHeader("X-Forwarded-For")总是返回127.0.0.1
使用场景:nginx+tomcat,nginx起反向代理作用,由于没有做以下配置,结果在tomcat部署的jia-web通过request.getHeader("X-Forwarded-For")总是返回127.0.0.1:
johnhuster的分享
2022/03/28
8410
application和sharedpreference的区别
在android程序中,我们经常用intent来传递数据,但是intent传递的数据类型太少了。因此我们经常通过以下两种方法来传递数据。
提莫队长
2019/02/21
5320
事务的 ACID 属性我总是傻傻分不清
对于大部分程序员来说,他们的任务就是把现实世界的业务场景映射到数据库世界。比如银行为了存储人们的账户信息会建立一个account表:
JiekeXu之路
2019/06/19
5030
请不要滥用SharedPreference
SharedPreference是Android上一种非常易用的轻量级存储方式,由于其API及其友好,得到了很多很多开发者的青睐。但是,SharedPreference并不是万能的,如果把它用在不合适的使用场景,那么将会带来灾难性的后果;本文将讲述一些SharedPreference的使用误区。
weishu
2018/09/05
1.5K0
请不要滥用SharedPreference
为何cytoscape总是说我没有java呢
因为最近自己购置了一个全新的Windows电脑,所以就系统性的配置了全部的生物信息学相关软件,当然是也包括cytoscape啦。但是遇到了报错,如下:
生信技能树
2020/07/30
2.3K0
为何cytoscape总是说我没有java呢
Android SharedPreference工具类
Android SharedPreferences工具类 新建一个SpUtil工具类 /** * Created by xpf on 2017/03/25 :) * Function: sp存储的工具类 */ public class SpUtil { private static final String SP= "sharedpreference"; private SpUtil() { } private static SpUtil instace = ne
程序员飞飞
2020/02/27
1.9K0
请不要滥用SharedPreference
SharedPreference是Android上一种非常易用的轻量级存储方式,由于其API及其友好,得到了很多很多开发者的青睐。但是,SharedPreference并不是万能的,如果把它用在不合适的使用场景,那么将会带来灾难性的后果;本文将讲述一些SharedPreference的使用误区。
weishu
2020/01/20
6040
请不要滥用SharedPreference
java删除文件时总是返回false,删不掉「建议收藏」
我的文件都是存在的,但是就是经常性的删不了,不知道怎么回事,我单独测试的时候是可以的,感觉很是奇怪,上网查,人家说是可能的情况有:
全栈程序员站长
2022/06/27
1.7K0
Android学习笔记(十三)SharedPreference必须掌握的基础
codingblock
2017/12/29
9170
Java删除文件时总是返回false,删不掉,且无异常
今天在利用 File 类中的 delete() 方法删除文件时总是返回 false 。查看路径文件路径正确,文件也存在。测试可以正常,唯独在项目中那是一个删不掉啊。后来与测试用例仔细比对了一下,发现有个 IO 类在使用,因此得出:在删除文件是因为没关闭 IO,导致文件无法删除,后来加上 close() 就可以删除文件了。
全栈程序员站长
2022/08/27
1.6K0
java直接读取.zip压缩文件ZipEntry.getsize()总是返回-1?
但是后面发现一个问题,读取的时候总是返回-1 ze.getSize()的值总是-1,可是名字都到了。 找不到法子,着实无奈,后面换了种方式,干脆将文件解压出来之后,在对文件里面的内容进行验证文件名和文件大小好了
软测小生
2019/07/05
3K0
java直接读取.zip压缩文件ZipEntry.getsize()总是返回-1?
安卓开发之再用SharedPreference
1、先获取对象 MySharePreference = getPreferences(Context.MODE_PRIVATE);//这里的模式自己查找 2、如果需要获取保存的内容可以使用 getXXX方法 MySharePreference.getString(“username”, “”);//第二个参数是默认值 3、如果想更改保存的内容可以使用 MySharePreference.Editor edit = MySharePreference.edit();//开始修改 edit.putSt
苦咖啡
2018/05/08
6120
Android 存储学习之使用SharedPreference保存文件
上两节我们都是使用文本文件保存用户的信息,这明显是存在漏洞的。同时对文件中的内容不好管理。今天我们学习用SharedPreference保存。sharedPreference是专门保存一些比较零散的数据的。
DragonKingZhu
2022/05/08
4740
Android 存储学习之使用SharedPreference保存文件
成员变量的默认值
int类型的默认值是0 String类型的默认值是null double类型的默认值是0.0d Integer类型的默认值是null Long类型的默认值是null long类型的默认值是0L float类型的默认值是0.0f char类型的默认值是\u0000 byte类型的默认值是(byte)0 short类型的默认值是(short)0
gfu
2019/09/18
2.7K0

相似问题

getIntExtra总是返回默认值

10

React总是返回默认值

17

getPreferences总是返回默认值

19

getFloatExtra()总是返回默认值

10

SharedPreference返回null颤动

126
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档