B2B网络软件
标题:
AIWROK线程许可证工具
[打印本页]
作者:
YYPOST群发软件
时间:
1 小时前
标题:
AIWROK线程许可证工具
AIWROK线程许可证工具
1.png
(779.42 KB, 下载次数: 0)
下载附件
1 小时前
上传
2.png
(785.47 KB, 下载次数: 0)
下载附件
1 小时前
上传
// AIWROK软件安卓交流QQ群711841924
// 苹果内测软件QQ群648461709
function ThreadLicense() {
var _isLocked = false;
var _waitingQueue = [];
/**
* 获取许可证
* @param {Function} callback - 获取许可证后的回调函数,接收release作为参数
* @returns {boolean} 是否成功获取许可证
*/
this.acquire = function(callback) {
if (typeof callback !== 'function') {
return false;
}
if (!_isLocked) {
_isLocked = true;
// 执行回调,并传入release函数
try {
callback(this.release.bind(this));
} catch (e) {
// 出错时自动释放许可证
this.release();
throw e;
}
return true;
} else {
// 添加到等待队列
_waitingQueue.push(callback);
return false;
}
};
/**
* 释放许可证
*/
this.release = function() {
_isLocked = false;
// 处理下一个等待请求
if (_waitingQueue.length > 0) {
var nextCallback = _waitingQueue.shift();
this.acquire(nextCallback);
}
};
/**
* 检查是否被锁定
* @returns {boolean} 是否已锁定
*/
this.isLocked = function() {
return _isLocked;
};
/**
* 获取等待队列长度
* @returns {number} 等待队列长度
*/
this.getQueueLength = function() {
return _waitingQueue.length;
};
}
// 全局许可证实例
var globalLicense = new ThreadLicense();
/**
* 创建许可证实例的便捷方法
* @returns {ThreadLicense} 新的许可证实例
*/
function createThreadLicense() {
return new ThreadLicense();
}
// 简单的延时函数
function delay(ms, callback) {
if (typeof java !== 'undefined' && java.lang.Thread && java.lang.Thread.sleep) {
// Rhino环境
try {
java.lang.Thread.sleep(ms);
if (typeof callback === 'function') {
callback();
}
} catch (e) {}
} else {
// 标准环境
setTimeout(callback, ms);
}
}
// 简单的打印函数
function safePrintl(msg) {
if (typeof printl === 'function') {
printl(msg);
} else if (typeof console !== 'undefined' && typeof console.log === 'function') {
console.log(msg);
}
}
// 简单示例
function licenseExample() {
safePrintl("线程许可证工具 - 简单示例");
var license = new ThreadLicense();
// 任务1
license.acquire(function(release) {
safePrintl("任务1获取到许可证");
// 模拟耗时操作
delay(2000, function() {
safePrintl("任务1完成,释放许可证");
release();
});
});
// 任务2会等待任务1完成
license.acquire(function(release) {
safePrintl("任务2获取到许可证");
// 模拟耗时操作
delay(1000, function() {
safePrintl("任务2完成,释放许可证");
release();
});
});
}
// 执行示例
licenseExample();
复制代码
欢迎光临 B2B网络软件 (http://bbs.niubt.cn/)
Powered by Discuz! X3.2