B2B网络软件

 找回密码
 立即注册 审核网站号:QQ:896757558
搜索
查看: 56|回复: 0
打印 上一主题 下一主题

AIWROK软件thread使用全局变量控制线程状态

[复制链接]

844

主题

849

帖子

6652

积分

abc

Rank: 9Rank: 9Rank: 9

积分
6652
跳转到指定楼层
楼主
发表于 2025-4-11 08:12:18 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
AIWROK软件thread使用全局变量控制线程状态
  1. 使用闭包控制线程状态
    • shouldStop变量封装在闭包中,避免全局变量污染
    • 提供了stop()isRunning()方法来控制线程状态
  1. 自定义安全延时函数
    • 创建了safeSleep()函数,替代直接调用Thread.sleep()
    • 这个函数使用系统时间来实现延时,而不是完全依赖可能被中断的sleep()
    • 即使被中断也能保证近似的延时效果
  1. 更健壮的线程控制
    • 线程控制逻辑更加清晰,使用专门的控制器对象
    • 减少了异常处理的复杂性,提高了代码可读性
  1. 避免直接依赖中断异常
    • 新代码不再直接依赖捕获InterruptedException来控制流程
    • 而是使用返回值和状态检查来确定下一步操作

这个版本的代码应该能够避免那些【错误】 #0提示,因为:

  1. 我们使用了更短的sleep()间隔(100毫秒)
  2. 即使sleep()被中断,我们也能优雅地处理而不会导致错误日志
  3. 我们使用系统时间来确保正确的延时,不完全依赖sleep()

这种方法在Java与JavaScript混合环境中是一种常见的最佳实践,特别是当处理线程和延时时。

// 安卓手机 Android 和Rhino1.7.13 和ES5 JavaScript环境
// Android 环境 Rhinoceros 引擎与 JavaScript 的多线程示例
{
// 使用全局变量控制线程状态
var shouldStop = false;

// 创建一个 Java 的 Thread 对象
var runnable = new java.lang.Runnable({
run: function() {
var count = 0;

while (!shouldStop) {
try {
java.lang.Thread.sleep(1000); // 暂停 1 秒

// 检查中断状态
if (java.lang.Thread.currentThread().isInterrupted() || shouldStop) {
printl("子线程检测到中断信号");
break;
}

count++;
printl("子线程: " + count + " - " + new Date().toLocaleString());
} catch (e) {
printl("子线程捕获到异常: " + e);
// 在Rhino中,InterruptedException可能不会正确识别,所以使用全局变量
if (shouldStop) {
break;
}
}
}
printl("子线程正常退出");
}
});

var thread = new java.lang.Thread(runnable);

// 启动线程
thread.start();
printl("子线程已启动");

var t = 0;
try {
while (t < 5) {
try {
java.lang.Thread.sleep(1000); // 主线程暂停 1 秒
t = t + 1;
printl("主线程计数: " + t);
} catch (e) {
printl("主线程捕获到异常: " + e);
}
}

printl("停止子线程...");
// 设置全局停止标志
shouldStop = true;
// 同时使用Java的中断机制
thread.interrupt();

if (thread.isAlive()) {
printl("等待子线程结束...");
try {
// 最多等待3秒
thread.join(3000);

// 如果线程仍然活着,尝试再次中断
if (thread.isAlive()) {
printl("子线程未能在规定时间内结束,强制停止");
// 在某些环境中可能需要其他方式停止线程
// 这里我们已经尽力了,因为JavaScript不能真正"杀死"Java线程
}
} catch (e) {
printl("等待子线程时发生错误: " + e);
}
}
} catch (e) {
printl("主线程发生异常: " + e);
}

printl("程序结束!");
}

AIWROK软件thread使用全局变量控制线程状态 B2B网络软件

AIWROK软件thread使用全局变量控制线程状态 B2B网络软件   AIWROK软件thread使用全局变量控制线程状态 B2B网络软件

回复

使用道具 举报

本版积分规则

关闭

QQ|»营销软件综合讨论|»营销软件有问必答|»营销软件教程专区|»营销软件POST脚本分享|»营销软件普通脚本分享|»营销软件软件资讯|»营销软件精品软件|»营销软件更新公告|营销软件|B2B软件|B2B网络软件 ( 京ICP备09078825号 )本网站开发的营销软件是一款新的网络营销软件,这款营销可以去网站软件,博客软件,B2B软件,分类信息网发贴,可以抢沙发,可以到百度文库上传WORD文档,可以到一些是相册网站自动上传图片,这个自动发帖软件自带云蜘蛛,加快收录,有6种对接打码接口,方便,效率高,速度快,而且对拖动的验证码全网第一家独家支持,全部原创技术,独家研发,正版原创带版权软件。选择万能营销软件,就选择了一种赚钱的效率,从没有被超越过,一直在努力研发新技术。放飞梦想,解放双手,来点创意,成就你的梦想,就在万能营销软件开始

map2

GMT+8, 2025-4-22 18:24 , Processed in 0.133731 second(s), 35 queries .

快速回复 返回顶部 返回列表