質問がわかりにくかったらすいません
メインスレッドを除いて作成されたすべてのスレッドを格納するためのリンクリストを持つ単純なマルチスレッドプログラムを作成しています。次に、メインスレッドを終了するための信号を送信したいのですが、他のすべてのスレッドが閉じたときにのみ、スレッドが閉じたときにリンクリストから削除され、メインスレッドがそのリストかどうかを確認しますサイズ == null またはそうでない
ここに私のコードがあります
public class MainProgram {
//some global static variable
static List<Thread> threadList = new LinkedList<Thread>();
public void main() throws IOException {
ServerSocket serverSocket;
serverSocket = new ServerSocket(1234);
while(true){
if(Shutdown_Handler.shutdown==true){
//wait for all other thread close/terminate
return
}
Socket s = serverSocket.accept();
ClientThread x = new ClientThread(s);
Thread y = new Thread(x);
threadList.add(y);
y.start();
}
}
}
Shutdown_Handler.shutdown==true の場合、メインは threadList がチェックされますnull
。問題は、スレッドをリストから削除する方法がわからないことです。私が検索したものとして、通常のオブジェクトの場合、このようなメソッドを作成できます
public class someObject {
public static void delete(){
if(list.size = null) return;
list.remove(this);
}
}
ただし、スレッドの場合、クラスが実装するRunnable
ため、this
参照はオブジェクトであり、リストに格納されているスレッドではありません