回答
你可以使用 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 生成,内容仅供参考