首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >停止特定的java线程

停止特定的java线程
EN

Stack Overflow用户
提问于 2011-10-16 18:19:02
回答 4查看 15.8K关注 0票数 4

我有一个按钮"addCashier“,它创建了一个叫做”收银员“的线程,现在这个线程只是每4秒生成一次订单,线程的run()方法中的一个while(true)循环。一切都很好,但现在我想添加一个按钮来模拟收银员注销。我在while循环onDuty中添加了一个布尔变量和一个公共函数logOff(),该函数将这个onDuty布尔值设置为false,以使我脱离运行的while循环。我现在的问题是,在我的gui类中,如何在特定线程上调用函数?每个收银员线程都是在运行时生成的,所以我不知道它们的名称。

我希望我说的有道理。提前谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-10-16 18:23:35

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Thread t = CashierThread();  //keep the reference to thread somewhere...

现在不使用布尔型属性,而是使用内置的interrupted标志:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public void run() {
  while(!Thread.currentThread().isInterrupted()) {
    //...
  }
}

当您想要通过单击按钮来关闭线程时,只需调用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
t.interrupt();

当然,您需要从客户端代码访问t变量。

票数 8
EN

Stack Overflow用户

发布于 2011-10-16 18:26:40

您可以将每个线程的引用以及它的idName作为键存储到HashMap中。稍后,当您想要处理某个特定的收银员线程时,可以使用Nameid从HashMap中获取相应的Thread,并对其调用适当的logOff()方法。

票数 1
EN

Stack Overflow用户

发布于 2011-10-16 18:27:10

如果收集对所有线程的引用是一个问题,另一种方法是使用一个公共的静态同步HashMap,它将threadId(运行时分配给每个线程的随机数)作为键,将布尔值作为值。您可以修改while循环,以便从这个集中式映射中选取相应的布尔值。这将允许您注销特定的收银员。

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

https://stackoverflow.com/questions/7786305

复制
相关文章
Java 多线程学习(2)——停止线程
interrupt()方法仅仅是在当前线程中打了一个停止标记,并不会真正的停止线程。 示例如下:
胡了了
2019/05/26
5920
Java并发编程之线程的停止
一般情况下,线程执行完成后就会结束,但有的时候我们可能需要在它正常执行完成前就停止它,可以考虑使用以下三种方法:
布禾
2021/03/07
6460
【说站】java停止线程的方式
首先通过 Thread.currentThread().isInterrupt() 判断线程是否被中断,随后检查是否还有工作要做。
很酷的站长
2022/11/23
5130
【说站】java停止线程的方式
Java:正确停止线程任务的实现方式
在Java中没有一种安全的抢占式方法来停止线程任务。只有一些协作式的机制,使请求取消的任务和代码都遵循一种协商好的协议。
崔认知
2023/06/19
3090
Java:正确停止线程任务的实现方式
Java中停止线程的3种方式
其中 stop 方法为 @Deprecated 修饰的过期方法,也就是不推荐使用的过期方法,因为 stop 方法会直接停止线程,这样就没有给线程足够的时间来处理停止前的保存工作,就会造成数据不完整的问题,因此不建议使用。而自定义中断标识也有一些问题,所以综合来看,interrupt 方法才是最理想的停止线程的方法,接下来我们一起来看它们的具体差异。
磊哥
2022/05/09
8640
Java中停止线程的3种方式
Java停止线程的四种方法
线程调用interrupt()方法后,在线程的run方法中判断当前对象的interrupted()状态,如果是中断状态则抛出异常,达到中断线程的效果。 如下示例:
凡人飞
2020/09/18
6.6K0
Java | 如何停止一个线程
这个时候 如果在外边使用这个线程的引用去调用它的interrupt(), 那其实不会对for循环的运行产生影响, 因为这种情况不支持;
凌川江雪
2020/04/14
1.8K0
Java | 如何停止一个线程
安全优雅地停止Java线程
这道问题的背后,可以很小,小到只是简单终止一个Thread线程,也可以很大,大到例如Dubbo应用的优雅下线......它们其实都有一个共同之处,即非一刀断式地暴力停止某个进程或者线程,而是能够实现在终止过程中,有机会去清理资源,跑完剩余的任务,最后没有任何资源在运行了,才做最后结束,这才算安全而优雅地停止。
朱季谦
2021/12/05
7940
java 如何优雅的停止一个线程
写过多线程的童鞋,可能都会遇到一个问题,那就是线程如何优雅的停止。这里主要介绍两个办法:标志位 和 thread.isInterrupted。
shengjk1
2020/01/14
1.6K0
1.7停止线程
线程停止:在线程处理完任务之前,停掉正在做的操作,也就是放弃当前操作。 在java中有三种方法可以实现线程的停止: 使用退出标志,使线程正常退出,也就是当run方法执行完后线程终止。 使用stop强行
用户1134788
2017/12/27
1.8K0
1.7停止线程
线程的停止与暂停
  停止一个线程意味着在线程处理完任务之前停掉正在做的操作,也就是放弃当前的操作。虽然看起来简单,但是必须做好正确的防范措施,以便达到预期的效果。停止一个线程可以用Thread.stop(),但最好不要用它。虽然它确实可以停止一个正在运行的线程,但是这个方法是不安全的,而且已经作废的方法。
全栈程序员站长
2022/09/06
5.6K0
线程的停止与暂停
【Java 语言】Java 多线程 一 ( 线程基础 : 线程启动 | 线程停止 | 线程暂停 | 线程优先级 | 守护线程)
-- 1. 继承 Thread 运行线程 : 重写 Thread 类的 run 方法, 然后执行该线程;
韩曙亮
2023/03/27
3.2K0
java中如何停止(stop)一个线程
马克-to-win:java的官方文档说不要用stop方法来停止一个线程。因为stop方法太狠,太极端,会出现同步问题,使数据不一致。所以我们会通过设置标志,通过return, break,异常等手段来控制流程自然停止。
马克java社区
2021/04/09
7270
java中如何停止(stop)一个线程
话说 线程创建&启动&停止
线程啊是个好东西,但是平时工作很少自己创建线程,所以一些基础的操作可能就不容易记起来,这篇文章常看看有益身心健康
木子的昼夜
2021/04/05
1.2K0
话说  线程创建&启动&停止
java执行和停止Logcat命令及多线程实现
本人在使用UiAutomator的时候,想多写一个自动收集手机log的方法,使用runtime类执行了adb logcat的方法,但是一直找不到好的方法结束这个线程,网上说有kill pid的,但是这个操作起来略微麻烦了。自己也想了一个destroy线程的方法,一直不好用。提示错误信息如下:
FunTester
2019/08/14
1.7K0
多线程 如何停止一个线程
这看似一个完全没有意义的问题,但是如果你是从搜索引擎过来的话,那么说明你碰到过这个问题。 线程执行完不就退出了,说停止有什么意义? 当然有意义,意义在于,一般创建线程后,如果是一次性的线程,执行结束就可以了,不用管它。 如果是一个一直需要保持运行,而需要在某一时刻才需要停止的线程,就需要关注线程是如何退出的。
潇洒
2023/10/20
2380
多线程专题---如何停止一个线程
最近做项目及看别人源码过程中涉及到多线程的知识,感觉自己多线程方面还不够系统,所以需要系统的总结一下这方面的知识。先从如何停止一个线程开始:
用户9854323
2022/06/25
6580
多线程专题---如何停止一个线程
如何停止一个线程
线程当中一般都会写循环,如果不写循环,一句话能搞定的事,就没必要再开线程来处理。 stop方法已经过时, run方法结束。 开启多线程时,运行代码通常是循环结构,只要控制住循环,就可以让run方法结束,也就是线程结束。 原理:只要循环终止了,线程也就终止了。
潇洒
2019/06/28
1.5K0
多线程笔记(四)线程的状态,线程的停止,线程的休眠,线程礼让,join,线程优先级,守护线程
A和B 两个线程,当CPU执行B的时候,B进行礼让,那么就离开cpu,这个时候B就变为就绪状态,CPU就重新 在A线程和B线程之间进行选择,有可能还是让B线程执行,这个时候就没有礼让成功。
一写代码就开心
2021/08/24
6630
Python 强制停止多线程运行
"""raises the exception, performs cleanup if needed"""
授客
2019/09/10
2.5K0
Python 强制停止多线程运行

相似问题

停止Java多线程中的线程

111

Java -停止休眠线程

31

如何停止线程- Java

96

Java,如何停止线程

30

如何停止Java线程?

58
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文