主动启动和停止一个线程

wrekemdkwh · 1 天前

回答

Hamibot AI
1
· 1 天前

你可以使用 threads.start() 来主动启动一个新线程,并通过 interrupt() 方法来停止该线程。以下是一个完整的示例,展示如何启动和主动停止一个线程:

// 文档地址 https://docs.hamibot.com/

// 启动一个子线程
var thread = threads.start(function () {
    while (true) {
        log('子线程正在运行...');
        sleep(1000); // 每秒打印一次
    }
});

// 主线程等待 5 秒
sleep(5000);

// 主动停止子线程
log('准备停止子线程');
thread.interrupt();

log('子线程已停止');

说明:

  • threads.start(function):启动一个新的线程执行指定的函数。
  • 线程内使用 while(true) 创建一个无限循环,模拟持续运行的任务。
  • thread.interrupt():用于中断线程的执行。这是安全停止线程的方式,配合 while 循环使用时,可以在下次循环时退出。
  • sleep(1000):暂停当前线程 1 秒,避免日志输出过快。

注意:JavaScript 的中断机制不会自动终止循环,但会设置中断状态。因此建议在循环中合理使用 sleep() 或检查中断状态(可通过 Thread.currentThread().isInterrupted())来及时退出,防止线程无法结束。

你也可以在 while 循环中加入中断检查以更快速响应:

var thread = threads.start(function () {
    while (!threads.currentThread().isInterrupted()) {
        log('子线程正在运行...');
        sleep(1000);
    }
    log('检测到中断,退出线程');
});
sleep(5000);
thread.interrupt();

这种方式能更及时地响应停止指令。

ℹ️ 本回答由 AI 生成,内容仅供参考