main线程 子线程 顺序_在主线程main中开启子线程thread示例
主线程中开启子线程代码实例:
创建CancleThread类 继承 Thread,对run()方法进行重写代码实例:
class CancleThread extends Thread
{
private boolean isRun = true;
private boolean isPinStart = false;
//重写Thread类的run()方法
public void run() {
int sleep;
String tip = "PedInputCancel\n";
while(isRun)
{
if(isPinStart)
{
isPinStart = false;
SystemClock.sleep(5000);
Display.appendInfo(tip);
try {
iPed.cancelInput();
} catch (PedDevException e) {
Display.printException(e);
assertTrue(String.format("cancelInput fail errCode=%d\nerrMsg=%s\n",
e.getErrCode(),e.getErrMsg()),e.getErrCode() == 0);
}
}
SystemClock.sleep(1000);
}
}
//利用stopRun()方法终止子线程的运行
public void stopRun()
{
isRun = false;
}
//利用 startPin()方法控制子线程中具体起作用的接口如: iPed.cancelInput();接口
public void startPin()
{
isPinStart = true;
}
}
开启子线程实例代码:
//实例化CancleThread 对象为thread
CancleThread thread = new CancleThread();
//通过调用start()方法开启子线程,从而运行子线程中的run()方法
thread.start();
Display.appendInfo("Pls input pin:");
Arrays.fill(PinBlockOut, (byte) 0);
try {
//利用 startPin()方法在子线程中运行 iPed.cancelInput()方法
thread.startPin();
PinBlockOut = iPed.getPinBlock(KeyIdx, ExpectPinLen, DataIn, eMode, TimeOutMs);
iRet = 0;
} catch (PedDevException pedDevException) {
Display.printException(pedDevException);
iRet = pedDevException.getErrCode();
errMsg = pedDevException.getErrMsg();
}
assertTrue(String.format("getPinBlock()=%d(%s), KeyIdx=%d, mode=%s\n",
iRet, errMsg, KeyIdx, eMode.name()), iRet == EPedDevException.PED_ERR_INPUT_CANCEL.getErrCodeFromBasement());
Display.appendInfo(String.format("getPinBlock()=%d(%s)\n",
iRet, errMsg));
}
//利用stopRun()方法终止子线程的运行
thread.stopRun();
说明: 以上代码实现目标:在主线程中调用 iPed.getPinBlock()方法的同时,并行运行子线程,并在子线程中运行iPed.cancelInput()方法。从而达到主线程运行同时运行子线程。
main线程 子线程 顺序_在主线程main中开启子线程thread示例相关推荐
- 简述java 线程四个状态_面四个选项中,哪些是线程进入阻塞状态的原因?_学小易找答案...
[简答题]通过继承 Thread 类的方式创建两个线程,在 Thread 构造方法中指定线程的名字,并将这两个线程的名字打印出来. [论述题]请运用所学原理解释,为什么在孩子成长的过程中,家长要不断地 ...
- java 控制线程的顺序_【Java多线程系列四】控制线程执行顺序
packagecom.concurrent.test;importjava.util.concurrent.CountDownLatch;importorg.junit.Assert;importor ...
- java 线程间变量共享_多线程:(五)多个线程之间共享数据
简单的总结一下多线程共享数据的方式.其实,最重要的,是一个思想,一个面向对象的编程思想的建立. 说两点: 一.如果每个线程执行的代码相同,可以使用同一个Runnable对象,这个Runnable对象中 ...
- centos7开机启动自定义脚本_在Centos 7系统中开启启动自定义脚本的方法
以下为你提供在Centos 7系统中开启启动自定义脚本的两种方法,这两种方法均已在centos 7系统上验证成功过. 编写脚本文件 1.创建脚本文件 touch test.sh 2.编写脚本内容 #! ...
- MySQL数据库---子查询insert,update,delete语句中嵌套子查询
十.子查询的使用(重点) 1.子查询:指的是查询语句,嵌套查询语句---->一般是放在where子句中,表示条件. 2.子查询的应用使用场景: 2.1查询过程中,虽然给了条件,但是条件的结果并不 ...
- android 开启子线程方法,android中开启子线程
AndroidRuntime(673): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example/ ...
- java创建单线程计时器_我们如何在Java中实现计时器线程?
该定时器类计划任务一次或多次给定的时间运行.它也可以作为后台程序线程在后台运行.要将Timer与守护程序线程相关联,有一个带有布尔值的构造函数.计时器以固定的延迟和固定的速率安排任务.在固定的延迟中, ...
- 为什么不能在BroadcastReceiver中开启子线程
当一个广播消息被Receiver监听到时,Android会调用它的onReceive()方法,并将包含消息的 Intent对象传给它处理, onReceive() 方法的执行时间不能超过10 秒, ...
- Android中开启子线程的方法和应用场景
new Thread(){ @Override public void run() { //需要在子线程中处理的逻辑 } }.start(); 创建Thread类对象,在run()方法中进行耗时操作. ...
最新文章
- 长达1500年之久的争论:意识是连续的还是离散的?心理物理学家给出了新的回答...
- a+=b 等价于 a=a+b ?
- 请教开发WinForm时输入法问题
- 2018牛客网暑期ACM多校训练营(第十场)A	Rikka with Lowbit (树状数组)
- s5pv210——nandflash和inand的基础理论
- 业务分析岗所需具备的技能_成功的业务分析师需要具备的3种技能
- hbuilder能用python_Hbuilder之开发Python
- 移植gettimeofday
- Qpython实现命令行的贪吃蛇
- BZOJ2832[AHOI2012] 信号塔
- 计算机科学家壁纸,电脑励志好看的文字壁纸推荐
- 大厂工作3年,我决定把大学到现在7年所有珍藏的书籍都分享一遍
- C# 打开CMD窗口并执行CMD 指令
- ssm使用注解配置多数据源
- 这才是我想要的彩虹进度条-[vue-ins-progress-bar]
- 成都办理或者补办社保卡的秘籍
- Atom汉化之Atom-Simplified-Chinese-Menu
- Android Bluetooth HID实现详解
- Android动画特效之Animator属性动画实现
- WIFI信号放大增强器(中继器)中继成功后怎么改名字
热门文章
- snipaste橡皮擦的使用
- nuxt框架Universal和Spa两种render mode的区别
- 8月报考季,软考科目选哪个?
- PTA-L1-007 念数字 (C语言)
- css实现毛玻璃效果
- FileOutputStream、OutputStreamWriter、BufferedWriter的区别和用法
- Windows时钟同步(时间同步)问题
- python中config(state=disabled)_解决python flask中config配置管理的问题
- Vue动态控制表格列的显示隐藏
- Matlab幂律变换及直方图均衡化