线程

# 说明 线程模块函数主要是跟线程信息相关联 线程模块的对象前缀是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(); ```