我想知道某个线程的实例是否正在运行,以便我可以使用它。这可能吗?我该怎么做?有什么策略或建议吗?
例如说我有这个线程:
public class SomeThread extends Thread{
ArrayList<String> stringArray=new ArrayList<String>();
public void run(){
//some long time operation or messaging going on
}
public ArrayList<String> getList(){
return stringArray;
}
}
public abstract class AnyActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(//any an instace of SomeThread exist){
ArrayList<String> array=//somehow.getList();
} else {
SomeThread thread=new SomeThread();
thread.setPriority(Thread.MAX_PRIORITY);
thread.start();
}
}
编辑1:我不想传递线程的引用,因为这可能是我启动它的唯一地方。认为 SomeThread 具有重要意义并从应用程序开始。我需要通过Messenger
's 询问它,否则它可能会告诉活动以相同的方式做某事。我已经更新了示例代码并设置了 AnyActivity 抽象。应用程序中的所有活动都扩展了这个类,所以我不知道线程是否已经创建和启动,这意味着我不能依赖引用。
所以我无法使用thread.isAlive()
并且没有静态方法SomeThread.isAlive()
。我可以setName()
在线程内部使用,但是之后如何通过它的名称找到它?