java – 多线程的好习惯
发布时间:2020-05-24 09:37:38 所属栏目:Java 来源:互联网
导读:我有一个应用程序,当一个“游戏”统计,它启动几个不同的线程.我开始这样的线程: Thread thread = new Thread(new Runnable(){ public void run() { //... }});thread.setName(killMeAtEnd);thread.start(); 稍后当游戏结束时,我在游戏内部有
|
我有一个应用程序,当一个“游戏”统计,它启动几个不同的线程.我开始这样的线程: Thread thread = new Thread(new Runnable()
{
public void run()
{
//...
}
});
thread.setName("killMeAtEnd");
thread.start();
稍后当游戏结束时,我在游戏内部有一个dispose()方法,它对所有正在运行的线程进行排序,并结束所有名为“killMeAtEnd”的线程.我的问题是,这是一个好习惯吗?我的目的是保持我的应用程序快速运行并且杂乱无章,根据我的经验,留下“悬挂”的线程会降低手机的速度,直到应用程序终止.有一个更好的方法吗?这甚至值得打扰吗? 编辑: 如果有人有兴趣,这是我的dispose().此代码在Game类中. public void dispose()
{
Thread threads[] = (Thread[])Thread.getAllStackTraces().keySet().toArray();
for(int x=0;x<threads.length;x++)
{
Thread thread = threads[x];
if(thread.getName().equalsIgnoreCase(KILL))
{
try
{
thread.interrupt();
}catch(Exception e){Log.e(Viewer.GAME,Log.getStackTraceString(e));}
thread = null;
}
}
}
public static final String KILL = "endOnDispose";
解决方法你有正确的想法,但有一些方面需要改进:>只需在创建线程时将线程添加到列表中,而不是查询系统中所有正在运行的线程.然后,您可以终止您创建的所有线程或等待它们完成(加入).>中断只会中断处于阻塞状态的线程,因此您需要有一个额外的标志,线程会定期检查(即在每个“工作周期”之后).>在线程内捕获中断异常并处理它(即正常退出). (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
