PROGRAMMING

m9/ JAVA
REMEMBERS




Last update:   05-10-2021

SLEEP

p26 One of the best ways to help your threads take turns is by using sleep. The main thread will became the current running tread.
 
class App {
    
    public static void main(String[] args) throws InterruptedException {
        
        System.out.println("Start in main");

        new Thread(new MyClass(1)).start();
        new Thread(new MyClass(2)).start();
        new Thread(new MyClass(3)).start();
        
        System.out.println("Back in main");
    }
}

class MyClass implements Runnable {

    int no = 0;
    public MyClass(int no) { this.no = no; }
    
    @Override
    public void run() {
        try {

            Thread.sleep(1000);  // Look Here

        } catch(InterruptedException e) {}
        System.out.println("Thread " + no + " / run");
    }
}

/* 
    Start in main
    Back in main
    Thread 1 / run
    Thread 3 / run
    Thread 2 / run
*/
... 21 lines
 

STOP

p27 A thread is automatically destroyed when the run() method has completed. It might be required to stop a thread on runtime.
 
class App {

    public static void main(String[] args) throws InterruptedException {

        System.out.println("Start main thread");

        MyClass t1 = new MyClass("A");
        MyClass t2 = new MyClass("B");
        
        new Thread(t1).start();
        new Thread(t2).start();
        Thread.sleep(2000); 

        t1.stop();
        t2.stop();

        Thread.sleep(1000); 
        System.out.println("Exit main thread");
    }
}

class MyClass implements Runnable {

    private String name;
    private Boolean exit = false;
    public MyClass(String n) { name = n; }

    @Override
    public void run() {

        while(!exit) {
            System.out.println("Thread " + name + " / Run");
            sleep(1000);
        }
        
        System.out.println("Thread " + name + " / Exit");
    }

    public void sleep(int ms) {
        try { 
            Thread.sleep(ms); 
        } catch (InterruptedException e) {}
    }

    public void stop() {
        exit = true;
    }
}

/*
    Start main thread
    Thread A / Run
    Thread B / Run
    Thread A / Run
    Thread B / Run
    Thread A / Exit
    Thread B / Exit
    Exit main thread
*/
... 39 lines
 

Questions    
Synchronized

        A B C D E F
🔔
1/1