次のスニペットは、「Foo」という名前のスレッドで、1 分間スリープし、1 分間に入力されたデータをログ ファイルにコピーします。
while(isStarted) {
try {
Thread.sleep(60000); // sleep for 1 minute
ArrayList<String> keyStrokeList = nativeMethods.getKeyStrokeList();
int result = copy.copyToLogFile(keyStrokeList);
System.out.println(result);
} catch(Exception exc) {
exc.printStackTrace();
}
}
1 つの状況について説明します。
fooスレッドは、過去 1 分間に入力されたすべてのデータのコピーを完了し、スリープ状態になってから 30 秒が経過しました。このスレッドは、スリープ中にいくつかのキーがタップされている状況を認識していないため、 を押したときにキーストロークをログファイルにコピーすることはできませんSystem.exit(0)
。
このスレッドを中断する方法はありますか。つまり、スレッドを起動して、データをログ ファイルにコピーするように依頼してください。
この問題にどのように取り組むべきか議論してください。
質問の状況:
loop started
thread is sleeping and will sleep for 1 minute
after a minute,it gets the keys tapped in the last 1 minute and copies all that
to a file
Thread sleeps again..and will sleep for 1 minute before it copies the keystrokes
It has been about 30 seconds and thread will sleep for 30 seconds more before it starts
copying the key strokes
suddenly the user presses exit button in the application
The user wants that key strokes be recorded till the second he presses exit
I cannot do System.exit(0) before checking the thread is asleep or not
How do I do this. Should I awake it or make a different call to the list and get the
key strokes because they are being recorded ? And how shall I awake it ?