Android先执行线程池后执行主线程
2017-01-07 10:58
323 查看
1.使用CountDownLatch,计数方式判断线程是否结束
定义一个CountDownLatch
private static CountDownLatch cdl = new CountDownLatch(1);//数值是计数器初始值
在主线程中等待,代码如下
try {
cdl.await();
} catch (InterruptedException e) {
}
executorService.shutdown();
在线程池中,执行完线程中的步骤,计数器减一,当计数器得到0,主线程的await就不再等待,主线程被唤醒,写在子线程中的代码如下
cdl.countDown();
然后就可以啦
缺点:不能重复使用,所以…..对于现在的我来说好像没什么用。看别人的博客说,性能貌似也不是很好,不知道为啥,有知道的朋友可以告诉我
2.使用isTerminated判断线程是否结束
前提是在子线程或者线程池里面要把线程或者线程池shutdown
子线程最后加上代码:
executorService.shutdown();//excutorService是线程或者线程池的名字
在主线程中加上代码:
while(true){
if(executorService.isTerminated()){
break;
}
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
3.使用awaitTermination
和第二个方法类似,只是定下一个时间间隙,让主线程每隔这个时间间隙就去检查子线程是否结束
exec.shutdown();
exec.awaitTermination(1, TimeUnit.HOURS);
定义一个CountDownLatch
private static CountDownLatch cdl = new CountDownLatch(1);//数值是计数器初始值
在主线程中等待,代码如下
try {
cdl.await();
} catch (InterruptedException e) {
}
executorService.shutdown();
在线程池中,执行完线程中的步骤,计数器减一,当计数器得到0,主线程的await就不再等待,主线程被唤醒,写在子线程中的代码如下
cdl.countDown();
然后就可以啦
缺点:不能重复使用,所以…..对于现在的我来说好像没什么用。看别人的博客说,性能貌似也不是很好,不知道为啥,有知道的朋友可以告诉我
2.使用isTerminated判断线程是否结束
前提是在子线程或者线程池里面要把线程或者线程池shutdown
子线程最后加上代码:
executorService.shutdown();//excutorService是线程或者线程池的名字
在主线程中加上代码:
while(true){
if(executorService.isTerminated()){
break;
}
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
3.使用awaitTermination
和第二个方法类似,只是定下一个时间间隙,让主线程每隔这个时间间隙就去检查子线程是否结束
exec.shutdown();
exec.awaitTermination(1, TimeUnit.HOURS);
相关文章推荐
- android_44_activity反向传值
- android_图片转视频_image2video
- 【原】Android热更新开源项目Tinker源码解析系列之三:so热更新
- Android 滑动
- 安卓各版本主要的特性
- Android 多Module(组件)开发
- Android中实现全屏、无标题栏的两种办法
- Android 安卓命名规范
- MD风格的progressbar实现,可以在5.1以下使用
- android学习资料链接汇总
- AndroidStudio提交项目到SVN
- Android页面中点击空白处隐藏软键盘
- Android的gps定位
- Android消息机制—倒计时计数器
- actvity与fragment之间的数据传递
- Android开发error: java.lang.NullPointerExceptio
- Android 手机展示照片 会有90°旋转的问题的解决方案
- Android enter键设置键盘搜索回车
- 【Android 声音处理】MediaPlayer和SoundPool
- android中lambda表达式使用示例