JAvaバックグラウンドの単純非同期処理例
1195 ワード
背景
最近のプロジェクトの1つの需要は、新しい演習タスクがあるホストに攻撃命令を呼び出すことを要求し、同時に相手のホストの警告情報が自機データベーステーブルに同期するのを待ってから、現在の演習タスクを警報情報idに関連付けなければならない.
考える
複数のアクションがあり、相手のホストが同期して警告するのを待っているため、このプロセスには1分程度かかる可能性があります.複数のメソッドをシリアル化すると、フロントエンドが戻り結果を得るのに1分かかる可能性が高いので、ポップアップのプロンプトボックスが「操作成功」を示すのは普通の人ではできません.攻撃を開始するコマンドをアクションにし、アラーム情報が同期して関連付けられるのを待つ非同期処理が必要です.
例
構想を広げる.
アラート情報の同期を待機し、関連付けます.このステップでは、同期したアラート情報を取得し、関連付けを行い、アラート情報のステータスを関連付けに変更するタイマを書きます.
最近のプロジェクトの1つの需要は、新しい演習タスクがあるホストに攻撃命令を呼び出すことを要求し、同時に相手のホストの警告情報が自機データベーステーブルに同期するのを待ってから、現在の演習タスクを警報情報idに関連付けなければならない.
考える
複数のアクションがあり、相手のホストが同期して警告するのを待っているため、このプロセスには1分程度かかる可能性があります.複数のメソッドをシリアル化すると、フロントエンドが戻り結果を得るのに1分かかる可能性が高いので、ポップアップのプロンプトボックスが「操作成功」を示すのは普通の人ではできません.攻撃を開始するコマンドをアクションにし、アラーム情報が同期して関連付けられるのを待つ非同期処理が必要です.
例
public void callURL(param1,param2,...){
attackMethod();//
// id alertid
ReheaserseThread thread = new ReheaserseThread(rehearseHome.getIpAddress(),rehearseHome.getId(),account);
Thread t1 = new Thread(thread);
t1.start();
}
//
public class ReheaserseThread implements Runnable {
private Long id;
private String ip;
private String account;
public ReheaserseThread(String ip,Long id,String account) {
this.id = id;
this.ip = ip;
this.account = account;
}
public void run() {
getAlertListIdAndAlertId(ip,id,account);
}
}
構想を広げる.
アラート情報の同期を待機し、関連付けます.このステップでは、同期したアラート情報を取得し、関連付けを行い、アラート情報のステータスを関連付けに変更するタイマを書きます.