/** * Understödjande tekniker: Multitrådning * Med Frivillig utökning * Varning för en del svengelska i uppgiften... * @author emi-lind * */ public class Multitradning extends Thread { private int sleptCount = 0; // Increments when Multitrading sleeps public static void main(String[] args) {new Multitradning();} public Multitradning() { T1 firstThread; T2 secondThread; // 1. Skapa och starta en tråd från klass T1 firstThread = new T1(this); // 2. Vänta i 5 sekunder makeSleep(5); // 3. Skapa och starta en tråd från klass T2 secondThread = new T2(this); // 4. Vänta i 5 sekunder makeSleep(5); // 5. Pausa tråden från klass T2 secondThread.setActive(false); // 6. Vänta i 5 sekunder makeSleep(5); // 7. Aktivera tråden från klass T2 secondThread.setActive(true); // 8. Vänta i 5 sekunder makeSleep(5); // 9. Stoppa tråden från klass T1 firstThread.killThread(); // 10. Vänta i 5 sekunder makeSleep(5); // 11. Stoppa tråden från klass T2 secondThread.killThread(); System.out.println("Exit success"); System.exit(0); } /** * Called from other threads. Prints a message to system.out. * (Same as just writing System.out.println(String) directly in * the threads, but this way is more fun since it's called from the threads!) * @param text to be printed */ public void taskPerformed(String text) { System.out.println(text); } /** * Sleeps thread for given amount of time * @param seconds to be sleeping */ private void makeSleep(int seconds) { try { sleep(seconds * 1000); } catch(InterruptedException ie) { // Do Nothing } System.out.println("Main slept: " + ++sleptCount + " time(s)."); } }