当前位置: 首页 > news >正文

停止线程:非官方版本

“你好,阿米戈!这是一个有趣的问题,你可能已经遇到或很快就会遇到。如何停止正在运行的线程?

假设用户告诉程序“从互联网下载文件。主线程为此作业创建一个单独的子线程,并向其传递一个对象,该对象的 run 方法包含下载文件所需的全部必要操作。

但是用户突然改变了主意。他不想下载文件了。我们如何取消作业并停止线程呢?

“是啊,告诉我如何做?”

我们做不到。这是最常见、最正确的答案。你无法停止线程。线程只能自行停止。”

但是你可以向线程发送信号,通过某种方式告诉它不再需要执行工作并应终止运行。就像主线程通过从 main 方法返回进行终止一样,子线程也通过从 run 方法返回进行终止。

“这样做的最佳方法是什么?”

“你可以添加某个变量,如 boolean。如果它为 true,则线程运行。如果为 false,则线程应终止。如以下示例所示:”

代码说明
class Clock implements Runnable
{
public void run()
{
while (true)
{
Thread.sleep(1000);
System.out.println("Tick");if (!ClockManager.isClockRun) return;
}
}
}

Clock 类始终每隔一秒向控制台写入一次“嘀嘀”

如果 ClockManager.isClockRun 为 false,则 run 方法结束。

class ClockManager
{
public static boolean isClockRun = true;
public static void main(String[] args)
{
Clock clock = new Clock(); Thread clockThread = new Thread(clock); clockThread.start();Thread.sleep(10000);
isClockRun = false;
}}
主线程启动应永远运行的子线程 (clock)

等待 10 秒,并向 clock 发送信号以结束运行。

主线程完成工作。

clock 线程结束工作。

“如果我们有多个线程会怎么样,又该怎么做呢?”

“最好在每个线程中都有这样一个变量。最方便的办法是将其直接添加到类中。可以添加 boolean isRun 变量。但是,最好添加一个 boolean isCancel 变量,如果取消任务,该变量将变为 true。”

代码说明
class Clock implements Runnable
{
private boolean isCancel = false;public void cancel()
{
this.isCancel = true;
}public void run()
{
while (!isCancel)
{
Thread.sleep(1000);
System.out.println("Tick");
}
}
}
只要 isCancel为 false,Clock 类会每隔一秒向控制台写入一次词语“嘀嘀”。

当 isCancel变为 true 时,run 方法将终止。

public static void main(String[] args)
{
Clock clock = new Clock(); Thread clockThread = new Thread(clock); clockThread.start();Thread.sleep(10000);
clock.cancel();
}
主线程启动应永远运行的子线程 (clock)

等待 10 秒,然后通过调用 cancel 方法取消任务。

主线程完成工作。

clock 线程结束工作。

“我会记住这一点。谢谢你,艾莉。”

http://www.dtcms.com/a/505129.html

相关文章:

  • 网站设计赚钱吗网络域名怎么看
  • 广西建设学院官方网站网页制作基础教程
  • 自建站shopify义乌国际贸易综合信息服务平台
  • 网站建设项目的结论网站开发与维护项目招标
  • 网站建设要什么软件有哪些做网站找沈阳横纵网络
  • 互动力 网站建设网站后台怎么添加代码
  • 哈尔滨住房城乡建设局网站wordpress主题使用帮助
  • 开封网站建设公司网站源码在线查询
  • 教学网站建设目的企业网站的网络营销功能
  • 网站的市场营销方案注册深圳公司多少钱
  • 库尔勒网站商城建设怎么把网站制作成安卓
  • 衡水武邑县建设局网站2014做社交网站
  • 简短的软文范例百度seo网站
  • 沈阳seo网站推广优化交互性强的网站
  • 设计一个网站先做哪些构造有专业做外贸的网站吗
  • 向量数据库与RAG
  • 配资网站建设是什么企业网络规划和设计方案
  • 网站开发所需的费用网站免费正能量软件推荐
  • 深圳seo网站推广报价做网站公司做网站公司
  • 济南做网站的好公司品建设
  • 人社网站行风建设的建设和意见国际销售网站有哪些
  • 做软件营销网站怎么样制作灯笼的做法
  • 青岛房产网站湖北企业网站建设
  • 深圳市住房建设部网站网站首页设计收费
  • 聊天网站模板购物网站建设存在的问题
  • 国内投资咨询网站 html模板怎么免费从网站上做宣传
  • 网站源码哪个好水溶花边外发加工网
  • 做程序员招聘的网站淘客请人做网站
  • 网站设计目的什么是网络营销培训
  • 使用node Express 框架开发一个前后端分离的二手交易平台项目