初始化线程四种使用方式

时间:2021-07-08 09:50:21   收藏:0   阅读:18

1)、继承Thread

技术分享图片

 

 

 

2)、实现Runnable,接口

  技术分享图片

 

 

以上两种执行结果都是一样


3)、实现 Callable接口+FutureTask(可以拿到返回结果,可以处理异常

  技术分享图片

 

 相当于阻塞整个线程执行完成,获取返回结果,才会往下执行,不获取结果跟Thread 和 Runnable执行结果是一样的效果

 

 

   FutureTask<V>不仅可以接收Callable 还可以接收 Runnable

技术分享图片

 

4)、线程池

  多线程异步任务一般都是用线程池,业务上避免一直使用以上三种方式会浪费资源

  使用Executors工具类,原生的线程池可自行了解使用

 Executors.newFiexedThreadPool(3);
//或者 new ThreadPoolExecutor(corePoolSize,maximumPoolSize,keepAliveTime, TimeUnit unit,workQueue, threadFactory, handler);

 

技术分享图片

execute方法是无返值,submit按需使用都有返回值

技术分享图片

 

 

  以上四种的区别:

    1,2不能得到返回值,3可以获取返回值

    1,2,3都不能控制资源

    4可以控制资源,性能稳定

原文:https://www.cnblogs.com/UsualMind/p/14984360.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!