我有一个Android应用程序启动一个执行某些网络的线程,比如打开一个ServerSocket并收听它。 该应用程序的许多不同活动和服务必须能够与该线程进行通信,因此我必须实现一些在不同部分共享该线程的机制。 现在我有以下方法搜索线程的现有实例,并在失败的情况下启动一个
static public NodeReceiverThread getThread(){
for (Thread t : Thread.getAllStackTraces().keySet()){
if(t.getName().equals(threadName)){
return (NodeReceiverThread) t;
}
}
NodeReceiverThread th = new NodeReceiverThread();
th.start();
return th;
}
我没想到我也可以使用单例,这样可以节省一些性能,但这会让我承担线程可能在某些时候被杀死但仍然存在于内存中的风险。
我的例子是实现这种机制的可接受方式吗?
还有其他更好的方法吗?