私は、例外に当たったときに、きれいに停止したいサービスを継続しています。これはリソースのパラダイムを試そうとするとうまく適合しますが、実際にはリソースを「閉鎖」する必要はありません。「リソース」以外のものでtry-with-resourcesを使用する
コメントに基づいて明確にするためには、私のコードは私がしよう - と、リソース提供、まだ試し-と資源乱用していない間糖衣構文を使用することができますパターンがあります。この
class Service {
Resource resource;
State state;
boolean keepRunning = false;
void start() {
keepRunning = true;
resource = new Resource()
new Thread(() -> {
while(keepRunning) {
Data data = resources.pull();
state.update(data);
... // Do stuff with state
}
}).start();
}
void stop() {
keepRunning = false;
}
}
class Main {
void run() {
Service service = new Service();
service.start();
}
}
ようになります資源ではないもので?
これは不明です。具体的には、「サービス」を意味しますか?そして「きれいに止まる」ことには何が関係していますか? –
これは主に、定期的に実行されるwhileループです。このタスクは、内部的にリソースの最新のデータで更新を続けるスレッドを生成します。停止するには、ループを切り離してリソースを閉じる必要があります。 – Glyde
リソースを使って試してみるには、 'Closable'を実装するだけです。しかし、クローズメソッドで何もする必要はありません –