YYPOST群发软件 发表于 2026-4-15 06:42:58

安卓脚本线程全局变量H5可视化控制台

安卓脚本线程全局变量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');

页: [1]
查看完整版本: 安卓脚本线程全局变量H5可视化控制台