package 多线程;importjava.util.concurrent.Callable;importjava.util.concurrent.ExecutionException;importjava.util.concurrent.FutureTask;publicclassThread3implementsCallable{@OverridepublicObjectcall()throwsException{returnthis.getClass().toString();}publicstaticvoidmain(String[] args)throwsExecutionException,InterruptedException{Thread3 thread3 =newThread3();FutureTask<Object> ft =newFutureTask<>(thread3);newThread(ft).start();System.out.println(ft.get());}}
newFixedThreadPool与newSingleThreadExecutor
publicstaticvoidmain(String args[]){ExecutorService fixPool =Executors.newFixedThreadPool(5);for(int i =0; i <10; i++){
fixPool.execute(getThread(i));}
fixPool.shutdown();ExecutorService singPool =Executors.newSingleThreadExecutor();for(int i=0;i<10;i++){// singPool.execute(getThread(i));
singPool.submit(getThread(i));}
singPool.shutdown();}
newScheduledThreadPool
publicstaticvoidmain(String args[]){ScheduledExecutorService ses =Executors.newScheduledThreadPool(10);
ses.scheduleAtFixedRate(newRunnable(){@Overridepublicvoidrun(){try{Thread.sleep(1000);System.out.println(Thread.currentThread().getId()+"执行了");}catch(InterruptedException e){
e.printStackTrace();}}},0,2,TimeUnit.SECONDS);}
ThreadPoolExecutor
publicstaticvoidmain(String[] args){MyTask1 task =newMyTask1();ExecutorService es =newThreadPoolExecutor(5,5,0L,TimeUnit.MICROSECONDS,newSynchronousQueue<Runnable>(),newThreadFactory(){@OverridepublicThreadnewThread(Runnable r){Thread t =newThread(r);
t.setDaemon(true);System.out.println("创建线程"+t);return t;}});for(int i =0;i<=4;i++){// es.submit(task);
es.execute(task);}}