1.1.1.12. fejezet, Szálkezelés és időzítés
Beküldte pzoli - 2011, november 22 - 7:47du
Szál létrehozásához implementálni kell a public class Runnable interfészt az osztálynak, amelyiket futtatni szeretnénk ilyen módon. Ez együtt jár az osztály run metódusának felülírásával. Az indításhoz pedig szükségünk van egy Thread osztályból képzett objektumra, aminek a konstruktorába adjuk át a szálat. Lássuk hogyan:
public class CommandThread implements Runnable { protected String[] cmd; protected String homeDir; public CommandThread(String[] command, String homeDir) { this.homeDir = homeDir; this.cmd = command; } public void run() { try { procBuilder = new ProcessBuilder(cmd); Map<String, String> env = procBuilder.environment(); env.put("CHARSET", "UTF-8"); File file = new File(homeDir); procBuilder.directory(file); Process proc = procBuilder.start(); } catch (Exception ex) { ex.printStackTrace(); } } } public class Command { protected CommandThread shellThread; protected Thread ownThread; protected Timer timer; public void start() { shellThread = new CommandThread(); ownThread = new Thread(shellThread, "shellThread"); ownThread.start(); } public void schedule(int msec) { timer = new Timer(); if (!ownThread.alive()) { timer.schedule(new TimerTask() { public void run() { start(); } }, msec); } } }
Az időzítéshez szükségünk lesz egy Timer osztályból képzett objektumra, és annak a schedule metódusára, valamint egy TimerTask osztályból képzett objektumra. A schedule többféle paraméterrel hívható, így akár az állandó újraidőzítés is megoldható vele.
Lásd még: Java 8 concurrency tutorial
- A hozzászóláshoz be kell jelentkezni