 | |  |  | 安卓脚本线程全局变量H5可视化控制台
- //用多线程异步子任务运行一个定时
- // AIWROK 多线程实时日志监控系统
- var threads = {};
- var threadStatus = {
- countdown: 'running',
- randomLetter: 'running',
- randomTime: 'running',
- randomNumber: 'running'
- };
- // 辅助函数:将英文状态转换为中文
- function getStatusText(status) {
- if(status === 'running') return '正在运行';
- if(status === 'stopping') return '正在停止';
- if(status === 'stopped') return '已停止';
- return status;
- }
- // 日志输出函数 - 同时输出到控制台和H5界面
- function logToH5(message, level) {
- // 输出到控制台
- console.log(message);
-
- // 输出到H5界面(如果LogManagerH5可用)
- if(typeof LogManagerH5 !== 'undefined' && LogManagerH5.info) {
- try {
- switch(level) {
- case 'success':
- LogManagerH5.success(message);
- break;
- case 'warn':
- LogManagerH5.warn(message);
- break;
- case 'error':
- LogManagerH5.error(message);
- break;
- case 'gold':
- LogManagerH5.gold(message);
- break;
- default:
- LogManagerH5.info(message);
- }
- } catch(e) {
- // 如果H5日志失败,至少控制台有输出
- }
- }
- }
- // 线程1: 倒计时线程 (每10分钟倒计时)
- threads.countdown = new thread().runJsCode(function fun(){
- logToH5("[倒计时线程] 启动 - 开始10分钟倒计时", 'info');
- var startTime = Date.now();
- while(threadStatus.countdown === 'running') {
- var elapsed = Math.floor((Date.now() - startTime) / 1000);
- var remaining = 600 - elapsed; // 10分钟 = 600秒
- if(remaining <= 0) {
- logToH5("[倒计时线程] 倒计时结束!", 'success');
- break;
- }
- logToH5("[倒计时线程] 剩余时间: " + remaining + " 秒", 'info');
- sleep.second(1);
- }
- threadStatus.countdown = 'stopped';
- logToH5("[倒计时线程] 已停止", 'warn');
- }, "-倒计时线程")
- // 线程2: 随机字母生成线程
- threads.randomLetter = new thread().runJsCode(function fun(){
- logToH5("[随机字母线程] 启动", 'info');
- while(threadStatus.randomLetter === 'running') {
- var letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
- var randomIndex = Math.floor(Math.random() * letters.length);
- var randomLetter = letters.charAt(randomIndex);
- logToH5("[随机字母线程] 生成随机字母: " + randomLetter, 'gold');
- sleep.second(1);
- }
- threadStatus.randomLetter = 'stopped';
- logToH5("[随机字母线程] 已停止", 'warn');
- }, "-随机字母线程")
- // 线程3: 随机时间段显示线程
- threads.randomTime = new thread().runJsCode(function fun(){
- logToH5("[随机时间线程] 启动", 'info');
- while(threadStatus.randomTime === 'running') {
- var hours = Math.floor(Math.random() * 24);
- var minutes = Math.floor(Math.random() * 60);
- var seconds = Math.floor(Math.random() * 60);
- var timeStr = String(hours).padStart(2, '0') + ':' +
- String(minutes).padStart(2, '0') + ':' +
- String(seconds).padStart(2, '0');
- logToH5("[随机时间线程] 随机时间: " + timeStr, 'info');
- sleep.second(1);
- }
- threadStatus.randomTime = 'stopped';
- logToH5("[随机时间线程] 已停止", 'warn');
- }, "-随机时间线程")
- // 线程4: 随机数字生成线程
- threads.randomNumber = new thread().runJsCode(function fun(){
- logToH5("[随机数字线程] 启动", 'info');
- while(threadStatus.randomNumber === 'running') {
- var randomNumber = Math.floor(Math.random() * 1000); // 0-999之间的随机数
- logToH5("[随机数字线程] 生成随机数字: " + randomNumber, 'success');
- sleep.second(1);
- }
- threadStatus.randomNumber = 'stopped';
- logToH5("[随机数字线程] 已停止", 'warn');
- }, "-随机数字线程")
- // 线程5: 监控线程 - 获取其他线程状态并在10秒后停止所有线程
- threads.monitor = new thread().runJsCode(function fun(){
- logToH5("[监控线程] 启动 - 将监控其他线程状态", 'info');
- var startTime = Date.now();
- var elapsedSeconds = 0;
-
- // 辅助函数:将英文状态转换为中文
- function getStatusText(status) {
- if(status === 'running') return '正在运行';
- if(status === 'stopping') return '正在停止';
- if(status === 'stopped') return '已停止';
- return status;
- }
-
- // 监控10秒钟
- while(elapsedSeconds < 10) {
- logToH5("[监控线程] 当前各线程状态 (已运行 " + elapsedSeconds + " 秒):", 'info');
- logToH5(" - 倒计时线程: " + getStatusText(threadStatus.countdown), 'info');
- logToH5(" - 随机字母线程: " + getStatusText(threadStatus.randomLetter), 'info');
- logToH5(" - 随机时间线程: " + getStatusText(threadStatus.randomTime), 'info');
- logToH5(" - 随机数字线程: " + getStatusText(threadStatus.randomNumber), 'info');
-
- sleep.second(1); // 使用second代替millisecond
- elapsedSeconds++;
- }
-
- logToH5("[监控线程] 10秒已到,正在停止所有线程...", 'warn');
-
- // 更新状态标记
- threadStatus.countdown = 'stopping';
- threadStatus.randomLetter = 'stopping';
- threadStatus.randomTime = 'stopping';
- threadStatus.randomNumber = 'stopping';
-
- // 等待一小段时间让其他线程检测到状态变化并自行停止
- sleep.second(1);
-
- // 强制停止所有工作线程
- try {
- if(threads.countdown && threads.countdown.isAlive()) {
- threads.countdown.interrupt();
- logToH5("[监控线程] 已中断倒计时线程", 'success');
- }
- } catch(e) {
- logToH5("[监控线程] 停止倒计时线程时出错: " + e.message, 'error');
- }
-
- try {
- if(threads.randomLetter && threads.randomLetter.isAlive()) {
- threads.randomLetter.interrupt();
- logToH5("[监控线程] 已中断随机字母线程", 'success');
- }
- } catch(e) {
- logToH5("[监控线程] 停止随机字母线程时出错: " + e.message, 'error');
- }
-
- try {
- if(threads.randomTime && threads.randomTime.isAlive()) {
- threads.randomTime.interrupt();
- logToH5("[监控线程] 已中断随机时间线程", 'success');
- }
- } catch(e) {
- logToH5("[监控线程] 停止随机时间线程时出错: " + e.message, 'error');
- }
-
- try {
- if(threads.randomNumber && threads.randomNumber.isAlive()) {
- threads.randomNumber.interrupt();
- logToH5("[监控线程] 已中断随机数字线程", 'success');
- }
- } catch(e) {
- logToH5("[监控线程] 停止随机数字线程时出错: " + e.message, 'error');
- }
-
- logToH5("[监控线程] 所有线程已停止,脚本即将结束", 'success');
-
- // 最后停止所有脚本
- stopAll();
- }, "-监控线程")
- logToH5("所有线程已启动,监控线程将在10秒后停止所有其他线程", 'success');
复制代码
| |  | |  |
|