线程“死亡”后的反思
2016-07-28 18:39
573 查看
想法的产生
在写“别踩白块”的课设中,在游戏结束后弹出的Dialog对话框中个,设置了一个重新开始游戏的按钮,在注册监听是发现需要启动的是一个原来启动过但是已经完成工作的一个线程(即是一个“死亡”的线程)。希望通过线程名重启该线程,实现重新开始的功能。如下代码所示:Thread thread = new Thread(){ public void run(){ while(flag){ game.down(frame.mBolk); game.creatBlackBolk(frame.mBolk); try { Thread.sleep(500); } catch (Exception e) { e.printStackTrace(); } delay(); } } }; thread.start();
当线程执行完成“死亡”后,我希望通过如下代码重启该线程(线程名在Game类中设置成静态了,上面代码没有体现只是太麻烦,所以就放一块了):
Game.thread.start();
结果
很明显,这是不可能实现的,所以我华丽丽的over了,最后还傻傻地去找原因。原因
在线程的生命周期中,是没有死亡后重启这个概念的,当一个线程干完了自己该干的事情后就死了,就永远地消失了,不管通过什么方法,都无法重新唤醒,所以此处唯一的解决办法就是重新new一个线程出来。反思
通过这个简单小问题,暴露出了很大的问题:线程的学习不够过关,且对线程的生命周期的理解还不够透彻。线程这一章感觉难度系数比较大,特别是后面的线程通信和线程调度。在今后的学习中增加精力和时间去学习线程这一部分,我感觉是非常有必要的。相信自已一定会学好的。相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序