import java.lang.Thread;
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;
}
public String status(){
return "#"+id+"("+(countDown>0?countDown:"LiftOff")+"),";
}
@Override
public void run(){
// try{
while(countDown-- > 0){
System.out.print(status());
Thread.yield();
// TimeUnit.MILLISECONDS.sleep(1000);
}
// }catch(InterruptedException e){
// System.out.println("It is interrupted!");
// }
}
}
public class ThreadDemo{
// public static void main(String[] args){
// System.out.println("START?");
// for(int i=0;i<5;i++){
// Thread t=new Thread(new LiftOff());
// t.start();
// }
// System.out.println("END?");
// for(int i=0;i<10;i++)
// System.out.println(i);
// }
public static void main(String[] args){
for(int i=0;i<3;i++)
System.out.println("Before:"+i);
ExecutorService exec=Executors.newSingleThreadExecutor();
for(int i=0;i<5;i++){
exec.execute(new LiftOff());
}
exec.shutdown();
for(int i=0;i<10;i++)
System.out.println("After:"+i);
}
}