これを行う最も簡単な方法は、Thread
クラスを使用することです。Runnable
メソッドでフェッチ機能を実行するオブジェクトを提供しrun()
、スレッドが開始されると、別の実行スレッドでメソッドを呼び出しますrun
。
だから、このようなもの:
public class Fetcher implements Runnable{
public void run(){
//do fetching stuff
}
}
//in your code
Thread fetchThread = new Thread(new Fetcher());
fetchThread.start();
キャンセルできるようにしたい場合は、いくつかの方法でキャンセルできます。最も簡単なのは (最も暴力的でお勧めできない方法ですが、スレッドを中断することです:
fetchThread.interrupt();
それを行う正しい方法はFetcher
、変数を定期的にチェックして、実行中のことを停止する必要があるかどうかを確認するロジックをクラスに実装することです。
編集Spring を自動的に実行することについての質問に対して、定期的に実行する場合は、Quartz などのスケジューリング フレームワークを使用する必要があります。ただし、一度だけ実行したい場合は、@PostConstruct
アノテーションを使用できます。で注釈が付けられたメソッド@PostConstruct
は、Bean の作成後に実行されます。だから、あなたはこのようなことをすることができます
@Service
public class Fetcher implements Runnable{
public void run(){
//do stuff
}
@PostConstruct
public void goDoIt(){
Thread trd = new Thread(this);
trd.start();
}
}
編集 2私は実際にはこれについて知りませんでしたが、 Spring ドキュメント@Async
の議論をまだチェックしていない場合はチェックしてください。やりたいこともあるかもしれません。