13 Haziran 2019 Perşembe

Runtime Sınıfı

Giriş
Runtime sınıfı erişilebilir bir constructor vermiyor. getInstance () çağrısı ile nesneyi yaratıyoruz.

addShutdownHook metodu
Açıklaması şöyle. Ctrl + C ile uygulamayı kapatmak içindir. Bu metod içinde System.out.println() yapılabilir.
The Java virtual machine shuts down in response to two kinds of events:
  • The program exits normally, when the last non-daemon thread exits or when the exit (equivalently, System.exit) method is invoked, or
  • The virtual machine is terminated in response to a user interrupt, such as typing Ctrl+C or a system-wide event, such as user logoff or system shutdown.
- Ctrl +C Linux'ta SIGINT sinyali gönderir.
- Ancak Windows'ta java -jar ile başlatılan uygulamayı konsol penceresinden kapatınca CTRL-CLOSE 
gönderilir. addShutdownHook metodu bu sinyali yakalamaz. Bir çözüm burada.

Örnek
Şöyle yaparız.
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
  ...
  executorPool.shutdown();
  logger.info("Shutdown executorPool");
}));
availableProcessors metodu
Şöyle yaparız.
Runtime.getRuntime().availableProcessors();
exec metodu
Java kullanarak bir başka uygulamayı çalıştırmak için Runtime.exec() veya ProcessBuilder sınıfını kullanmak lazım. Her iki sınıf ta Process nesnesi ürettiği için geri kalan işlemler aslında hemen hemen aynı.

Runtime.exec() hata olursa exception atmaz. Process.exitValue() veya Process.getInputStream() metodları ile hatayı anlamak mümkün olabilir.

exec metodu - string
Örnek
ps komutu çalıştırmak için şöyle yaparız.
Process process = Runtime.getRuntime().exec("ps x");
Örnek - komut satırı
Şöyle yaparız.
Runtime run = Runtime.getRuntime();
Process pr = run.exec("cmd /c del /s/q c:\\mydirectory");
pr.waitFor();
Örnek - bat dosyası
Bat Dosyası Çalıştırma yazısına taşıdım.

exec metodu - string [] 

Örnek - array
Şöyle yaparız.
String[] cmd = ...;
Process p = Runtime.getRuntime().exec(cmd);
Örnek - pipe 
Şöyle yaparız.
String[] cmd = {
"/bin/sh",
"-c",
"ls /etc | grep release"
};

Process p = Runtime.getRuntime().exec(cmd);
exec - command + environment + working directory
Metodun imzası şöyle
exec(String[] cmdarray, String[] envp, File dir)
Üçüncü parametre uygulamanın "working directory" dizinini belirtir. Eğer null verilirse yeni uygulama kendisini yaratan uygulamanın "working directory" alanını kullanılır. 

Bat dosyasına "working directory" vermek için şöyle yaparız.
Runtime.exec("C:\mydir\myfile.bat", null, new File("C:\mydir"));
freeMemory metodu
Şöyle yaparız.
Runtime.getRuntime().freeMemory();
maxMemory metodu
Şöyle yaparız.
Runtime.getRuntime().maxMemory();
totalMemory metodu
Şöyle yaparız.
Runtime.getRuntime().totalMemory();

Hiç yorum yok:

Yorum Gönder