Runnable

import java.util.concurrent.*;

class LiftOff implements Runnable {
    protected int countDown =10;
    private static int taskCount = 0;
    private final int id = taskCount++;
    public LiftOff() {};
    public LiftOff(int countDown) {
        this.countDown = countDown;
    }

    private String status() {
        return "#" + id + "(" + (countDown>0? countDown: "LiftOff!") + "),";
    }

    public void run() {
        while(countDown-->0){
            System.out.print(status());
            Thread.yield();
        }
    }
}

public class ThreadDemo {
    public static void main(String... args) {
        for(int i=0; i<5; i++) {
            Thread t = new Thread(new LiftOff());
            t.start();
        }
    }
}


Result:
#0(9),#3(9),#0(8),#0(7),#0(6),#0(5),#0(4),#0(3),#0(2),#0(1),#0(LiftOff!),#2(9),#1(9),#3(8),#3(7),#3(6),#3(5),#3(4),#3(3),#3(2),#3(1),#3(LiftOff!),#2(8),#1(8),#2(7),#1(7),#2(6),#1(6),#2(5),#1(5),#2(4),#2(3),#2(2),#1(4),#1(3),#1(2),#1(1),#1(LiftOff!),#2(1),#2(LiftOff!),#4(9),#4(8),#4(7),#4(6),#4(5),#4(4),#4(3),#4(2),#4(1),#4(LiftOff!),

Thread

import java.util.concurrent.*;

class LiftOff extends Thread {
    protected int countDown =10;
    private static int taskCount = 0;
    private final int id = taskCount++;
    public LiftOff() {};
    public LiftOff(int countDown) {
        this.countDown = countDown;
    }

    private String status() {
        return "#" + id + "(" + (countDown>0? countDown: "LiftOff!") + "),";
    }

    public void run() {
        while(countDown-->0){
            try{
                System.out.print(status());
                TimeUnit.MILLISECONDS.sleep(100);
            } catch(InterruptedException e) {
                System.err.println("Interrupted");
            }
        }
    }
}

public class ThreadDemo {
    public static void main(String... args) {
        for(int i=0; i<5; i++) {
            Thread t = new LiftOff();
            t.start();
        }
    }
}

Executors

import java.util.concurrent.*;

class LiftOff implements Runnable {
    protected int countDown =10;
    private static int taskCount = 0;
    private final int id = taskCount++;
    public LiftOff() {};
    public LiftOff(int countDown) {
        this.countDown = countDown;
    }

    private String status() {
        return "#" + id + "(" + (countDown>0? countDown: "LiftOff!") + "),";
    }

    public void run() {
        while(countDown-->0){
            System.out.print(status());
            Thread.yield();
        }
    }
}

public class RunnableDemo {
    public static void main(String... args) {
        ExecutorService exec = Executors.newCachedThreadPool();
        for(int i=0; i<5; i++) {
            exec.execute(new LiftOff());
        }
        exec.shutdown();
    }
}

Callable

import java.util.concurrent.*;
import java.util.*;

class TasksWithResult implements Callable<String> {
    private int id;
    public TasksWithResult(int id) {
        this.id = id;
    }

    public String call() {
        return "result of TasksWithResult: " + id;
    }
}
public class CallableDemo {
    public static void main(String... args) {
        ExecutorService exec = Executors.newCachedThreadPool();
        ArrayList<Future<String>> results = new ArrayList<Future<String>>();
        for(int i = 0; i < 5; i++) {
            results.add(exec.submit(new TasksWithResult(i)));
        }
        for(Future<String> fs: results) {
            try{
                System.out.println(fs.get());
            } catch(Exception e) {
                System.out.println(e);
                return;
            } finally {
                exec.shutdown();
            }
        }
    }
}

results matching ""

    No results matching ""