木曜日, 4月 20, 2017

Java: タイム・アウト

この仕事が終わらない

なんて状態はよくあります。

終わらないなら強制終了させねばなりません。

指定時間内で終わらない仕事は強制終了する、そんな方法(コード)をお見せします。

Java で時間を指定するならスレッドを使うしかありません。

便利なクラスが提供されていますが基本はスレッドです。

行う動作を別スレッドで走らせて、指定時間が来たら interrupt() をかけます。

public class TimeOut extends Thread{
MyTask task;
public TimeOut(MyTask task){
this.task=task;
start();
}
public void run(){
try{
Thread.sleep(1000);
task.interrupt();
}catch(Exception e){
}
}
public static void main(String args[]){
MyTask task=new MyTask();
new TimeOut(task);
}
}
class MyTask extends Thread{
MyTask(){
start();
}
public void run(){
try{
for(;;){
System.out.print("*");
sleep(100);
}
}catch(Exception e){
}
}
}
view raw TimeOut.java hosted with ❤ by GitHub

Qt: 外部プログラムを起動する

  Qt/C++ のアプリは、外部へ直接アクセスできます。これはネットアプリでは不可能な Qt のメリットです。 外部プログラムを起動することもできます。QProcess::startDetached() を使うと独立したプロセスを立ち上げることができます。 この QProces...