线程
# 说明
线程模块函数主要是跟线程信息相关联
线程模块的对象前缀是thread,例如 thread.execFuncSync()这样调用
## setTimeout()
设定延迟多少毫秒后执行函数,在子线程中执行
@param func 要执行的函数
@param timeout 延迟时间,单位是毫秒
@return 线程对象 该对象可以进行取消
```js
function main(){
var worker=setTimeout(function() {
toast("我是一秒后执行的代码");
},1000);
}
main();
```
## cancelTimeout()
取消延迟执行
@param t 要取消的函数
```js
function main(){
var worker=setTimeout(function() {
toast("我是一秒后执行的代码");
},1000);
//取消就不会执行了
cancelTimeout(worker);
}
main();
```
## setInterval()
设置多少周期进行执行一次,在子线程中执行
@param func 函数
@param interval 周期时间,单位是毫秒
@return 线程对象 该对象可以进行取消
```js
function main(){
var worker=setInterval(function() {
toast("我是每隔一秒执行的代码");
},1000);
}
main();
```
## cancelInterval()
取消周期执行的函数
@param threadId 要取消的函数
```js
function main(){
var worker=setInterval(function() {
toast("我是每隔一秒执行的代码");
},1000);
cancelInterval(worker);
}
main();
```
## execSync()
执行某个函数并且等待true返回,如果函数中返回的是true,该方法将立刻执行完毕
@param condition 条件函数
@param timeout 超时时间,单位是毫秒
@return 布尔型 返回一个布尔型值
```js
function main(){
execSync(function() {
logd("我是同步执行的代码");
},1000);
}
main();
```
# thread线程对象
## thread.execAsync()
异步执行线程,这里会将Runnable放到线程池中进行管理
@param runnable Runnable对象
```js
var tid =thread.execAsync(function() {
while (true){
logd("我是异步执行的代码");
sleep(1000);
if(thread.isCancelled(tid)){
break;
}
}
});
logd("tid "+tid);
//5s后取消线程
sleep(5000);
logd("取消线程 "+tid);
thread.cancelThread(tid);
sleep(5000);
logd("结束 ");
```
## thread.execSync()
执行某个函数并且等待true返回,如果函数中返回的是true,该方法将立刻执行完毕
@param condition 条件函数
@param timeout 超时时间,单位是毫秒
@return 布尔型 返回一个布尔型值
```js
function main(){
thread.execSync(function() {
logd("我是同步执行的代码");
},1000);
}
main();
```
## thread.cancelThread(threadId)
取消线程的执行
@param threadId 线程对象ID
@return boolean
```js
var tid =thread.execAsync(function() {
while (true){
logd("我是异步执行的代码");
sleep(1000);
if(thread.isCancelled(tid)){
break;
}
}
});
logd("tid "+tid);
//5s后取消线程
sleep(5000);
logd("取消线程 "+tid);
thread.cancelThread(tid);
sleep(5000);
logd("结束 ");
```
## thread.isCancelled(threadId)
判断线程是否存活
@param threadId 线程对象ID
@return boolean true代表已经取消了,false表示未取消
```js
var worker = thread.execAsync(function () {
while (true) {
logd("我是异步执行的代码");
sleep(1000);
if (thread.isCancelled(worker)) {
break;
}
}
});
logd("tid " + worker);
//5s后取消线程
sleep(5000);
logd("取消线程 " + worker);
thread.cancelThread(worker);
sleep(5000);
logd("结束 ");
```
## thread.stopAll()
取消所有正在运行的线程
```js
function main(){
execSync(function() {
logd("我是同步执行的代码");
},1000);
thread.stopAll();
}
main();
```