特定の時間後にスレッドを停止したい。ここで私のサンプルコードを追加しました。スレッドのいずれかが6秒以上かかる場合は、特定のスレッドを停止することを意味します。残りのスレッドは影響を受けてはいけません。私はタイマーを使う必要がありますか?もし私がタイマー手段を使用したとしたら、各スレッドの新しいタイマーを作成する必要がありますか?ジョブが6秒前に終了したら、タイマーをキャンセルする必要がありますか?特定の時間の後にスレッドを停止する
class MyRunnableThread implements Runnable{
public static int myCount = 0;
private String fname = null;
public MyRunnableThread(String fname){
this.fname = fname;
}
public void run() {
try{
//read the content based on text and peforms the operation
//File.read(this.fname)
System.out.println("Run method stuff"+ this.fname);
} catch (Exception iex) {
System.out.println("Exception in thread: "+iex.getMessage());
}
}
}
public class RunMyThread {
public static void main(String a[]){
System.out.println("Starting Main Thread...");
String[] fname = {"file1.txt","file2.txt","file3.txt","file4.txt","file5.txt"};
for(int i=0;i<5;i++){
try{
MyRunnableThread mrt = new MyRunnableThread(fname[i]);
Thread t = new Thread(mrt);
System.out.println("Main Thread start "+i);
t.start();
//stop the thread support run method takes more than 6seconds
System.out.println("Main Thread end "+ i);
} catch (Exception iex){
System.out.println("Exception in main thread: "+iex.getMessage());
}
}
System.out.println("End of Main Thread...");
}
}
6秒前に>始めたスレッドを停止してい(https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html)+ ['Future'](https://docs.oracle.com/javase/8/) docs/api/java/util/concurrent/Future.html)は、そのような目的のために特別に設計されており、大きな機能を提供しています。 –