Java uygulamamın sağlam olmak için makul adımlar attığından emin olmaya çalışıyorum ve bunun bir parçası da nazikçe kapatmayı içeriyor. Hakkında okuyorumKapatma kancaları ve pratikte bunları nasıl kullanacağımı bilmiyorum.
Orada pratik bir örnek var mı?
Diyelim ki, aşağıdaki gibi gerçekten basit bir uygulamam vardı, sayıları bir dosyaya, 10'u bir satıra, 100'lük gruplar halinde yazıyor ve program kesintiye uğrarsa, belirli bir partinin bitmesini sağlamak istiyorum. Bir kapatma kancasını nasıl kaydedeceğimi anlıyorum, ancak bunu uygulamama nasıl entegre edeceğime dair hiçbir fikrim yok. Baska öneri?
package com.example.test.concurrency;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintWriter;
public class GracefulShutdownTest1 {
final private int N;
final private File f;
public GracefulShutdownTest1(File f, int N) { this.f=f; this.N = N; }
public void run()
{
PrintWriter pw = null;
try {
FileOutputStream fos = new FileOutputStream(this.f);
pw = new PrintWriter(fos);
for (int i = 0; i < N; ++i)
writeBatch(pw, i);
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
finally
{
pw.close();
}
}
private void writeBatch(PrintWriter pw, int i) {
for (int j = 0; j < 100; ++j)
{
int k = i*100+j;
pw.write(Integer.toString(k));
if ((j+1)%10 == 0)
pw.write('\n');
else
pw.write(' ');
}
}
static public void main(String[] args)
{
if (args.length < 2)
{
System.out.println("args = [file] [N] "
+"where file = output filename, N=batch count");
}
else
{
new GracefulShutdownTest1(
new File(args[0]),
Integer.parseInt(args[1])
).run();
}
}
}