1.Executor

接口源码:

public interface Executor {

    /**
* Executes the given command at some time in the future. The command
* may execute in a new thread, in a pooled thread, or in the calling
* thread, at the discretion of the <tt>Executor</tt> implementation.
*
* @param command the runnable task
* @throws RejectedExecutionException if this task cannot be
* accepted for execution.
* @throws NullPointerException if command is null
*/
void execute(Runnable command);
}

接口使用:

public class T01_MyExecutor implements Executor {

    public static void main(String[] args) {
new T01_MyExecutor().execute(()->System.out.println("hello executor"));
} @Override
public void execute(Runnable command) {
//new Thread(command).run();
command.run();
} }

2.ExecutorService

源码:

认识submit方法,扩展了execute方法,具有一个返回值

<T> Future<T> submit(Callable<T> task);

<T> Future<T> submit(Runnable task, T result);

Future<?> submit(Runnable task);

使用:

ExecutorService提供了管理Eecutor生命周期的方法,ExecutorService的生命周期包括了:运行  关闭和终止三种状态。
 
ExecutorService在初始化创建时处于运行状态。
shutdown方法等待提交的任务执行完成并不再接受新任务,在完成全部提交的任务后关闭
shutdownNow方法将强制终止所有运行中的任务并不再允许提交新任务
 
可以将一个Runnable或Callable提交给ExecutorService的submit方法执行,最终返回一上Futire用来获得任务的执行结果或取消任务
(任务执行完成后并返回执行结果)

public class CallableAndFuture {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        ExecutorService executor = Executors.newSingleThreadExecutor();
        Future<String> future = executor.submit(new Callable<String>() {   //接受一上callable实例
            public String call() throws Exception {
                return "MOBIN";
            }
        });
        System.out.println("任务的执行结果:"+future.get());
    }
}
输出:
任务的执行结果:MOBIN

3.Executors

提供了一系列静态工厂方法用于创建各种线程池

   newFixedThreadPool:创建可重用且固定线程数的线程池,如果线程池中的所有线程都处于活动状态,此时再提交任务就在队列中等待,直到有可用线程;如果线程池中的某个线程由于异常而结束时,线程池就会再补充一条新线程。
ScheduledExecutorService executor = Executors.newScheduledThreadPool();

4.ThreadPool

线程池的概念

public static void main(String[] args) throws InterruptedException {
ExecutorService service = Executors.newFixedThreadPool(); //execute submit
for (int i = ; i < ; i++) {
service.execute(() -> {
try {
TimeUnit.MILLISECONDS.sleep();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName());
});
}
System.out.println(service); service.shutdown();
System.out.println(service.isTerminated());
System.out.println(service.isShutdown());
System.out.println(service); TimeUnit.SECONDS.sleep();
System.out.println(service.isTerminated());
System.out.println(service.isShutdown());
System.out.println(service);
}

5.Future

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

        FutureTask<Integer> task = new FutureTask<>(()->{
TimeUnit.MILLISECONDS.sleep();
return ;
}); //new Callable () { Integer call();} new Thread(task).start(); System.out.println(task.get()); //阻塞 //*******************************
ExecutorService service = Executors.newFixedThreadPool();
Future<Integer> f = service.submit(()->{
TimeUnit.MILLISECONDS.sleep();
return ;
});
System.out.println(f.get());
System.out.println(f.isDone()); }

6.

最新文章

  1. 关于case语句中声明变量并初始化的注意事项
  2. Xamarin.Android之给我们的应用加点过渡效果
  3. 在浏览器的JavaScript里new Date().toUTCString()后,传递给C# DateTime().TryParse()会发生什么?
  4. 11039 - Building designing
  5. Asp.net中Json的序列化和反序列化(二)
  6. ASP.NET本质论第一章网站应用程序学习笔记3-对象化的Http
  7. bzoj4448 SCOI2015 情报传递 message
  8. [置顶] quartznet任务调度和消息调度(JAVA与C#版对比)
  9. linux/Windows系统如何安装PHP-openssl扩展
  10. 如何用IDEA一步一步开发WebService服务器端
  11. 例10-10 uva10491(简单概率)
  12. springboot~lombok使用总结
  13. 个人完善的springboot拦截器
  14. 反射调用DLL
  15. JAVA 多线程环境下的静态方法
  16. 在maven项目中引用ueditor报错问题
  17. Ubuntu 16.04 截图快捷键
  18. 微信小程序地图报错——ret is not defined
  19. SpringMVC一例 是否需要重定向
  20. JSONCPP to Visual Studio

热门文章

  1. Docker学习--Linux基础准备篇
  2. [转]ASP.NET Core 十种方式扩展你的 Views
  3. 解析xml文件步骤 -- pullparser
  4. Android 开发服务类 02_NewsListServlet
  5. IE10以下优雅降级(作为范例)
  6. Java 生成指定范围的随机数
  7. BFS和DFS详解以及java实现
  8. Docker中“TERM environment variable not set.”问题
  9. (译) 在AngularJS中使用的表单验证功能
  10. Kafka、RabbitMQ、RocketMQ消息中间件的对比