私はメソッドが呼び出されるJavaのスレッドを持っています。私はそれを殺すことができるように各スレッドのマップを保存しています。 私のサンプルコードは次のとおりです。私は私のストップ法、T呼び出されたときに問題があるJavaでのスレッド実行時間
public static void stop(String threadName) {
if (StringUtils.isNotEmpty(threadName)) {
Thread t = threadMap.get(threadName);
if (t != null && t.isAlive()) {
System.out.println("Going to kill the thread:" + threadName);
t.interrupt();
System.out.println("killed!!");
} else {
System.out.println("THREAD is null");
}
}
}
:私はのようなものを持っているので、
Thread thread = new Thread(new Runnable() {
public void run() {
executeMethod();
}
});
thread.start();
thread.setName("some Name");
//Create Map to save each method call as thread
threadMap.put("some Name", thread);
は、今私はスレッドを殺すことで、メソッドの呼び出しを停止したいです。 isAlive()はfalseです。私は、メソッドの実行時間はスレッドの生きている時間になると仮定します.Am私は正しいか、それを誤解していますか?
両方の引用では、isAlive()メソッドによって返される値は記録されません。このようなロジックでは、isAlive()メソッドを呼び出しているので、呼び出しコードが実行されているため、スレッドが実行されていないため、単一のコアCPUシステムでtrueを返すべきではありません。 – h22
私はOPの次の質問に答えました。「メソッドの実行時間はスレッドの生存時間と仮定します。 'isAlive()'メソッドでどの値を返すべきかという疑問はないと思ってください。 –