特定のスレッドのインスタンスが実行されているかどうかを確認したいので、それを使用できます。これは可能ですか、どうすればできますか? 戦略や提案はありますか?
たとえば、次のスレッドがあるとします。
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
、アクティビティに同じ方法で何かを行うように指示する可能性があります.サンプルコードを更新し、AnyActivity抽象を設定しました.アプリケーションのすべてのアクティビティはこのクラスを拡張するので、私はしませんスレッドが以前に作成および開始されたかどうかを知っているため、参照に頼ることはできません。
だから私は働くthread.isAlive()
ことができず、静的メソッドはありませんSomeThread.isAlive()
。スレッド内で使用setName()
できますが、後でその名前で見つけるにはどうすればよいですか?