package test;
import java.util.Date;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import org.springframework.beans.factory.annotation.Autowired;
public class DivideThread {
ExecutorService executor = Executors.newFixedThreadPool(10);
public void getCount() throws InterruptedException, ExecutionException{
Date time = new Date();
CallThread CallThread1 = new CallThread(1);
CallThread CallThread2 = new CallThread(2);
CallThread CallThread3 = new CallThread(3);
CallThread CallThread4 = new CallThread(4);
Future<String> rs = executor.submit(CallThread1);
System.out.println("1");
Future<String> rs2 = executor.submit(CallThread2);
System.out.println("2");
Future<String> rs3 = executor.submit(CallThread3);
System.out.println("3");
Future<String> rs4 = executor.submit(CallThread4);
System.out.println("4");
System.out.println(rs.get()+rs2.get()+rs3.get()+rs4.get());
System.out.println(time.getTime()- new Date().getTime());
// System.out.println("rs = " + rs.get());
// System.out.println("rs2 = " + rs2.get());
// System.out.println("rs3 = " + rs3.get());
// System.out.println("rs4 = " + rs4.get());
}
public static void main(String[] args) throws InterruptedException, ExecutionException {
DivideThread DivideThread = new DivideThread();
DivideThread.getCount();
}
}
class CallThread implements Callable<String>{
int sleep;
public CallThread(int sleep){
this.sleep = sleep;
}
@Override
public String call() throws Exception {
System.out.println(Thread.currentThread().getName()+" start.....");
try {
Thread.sleep(sleep*1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+" finish.....");
return Thread.currentThread().getName()+"DOCALL \n";
}
}