学好了多线程技术,程序员就有底气拿23K以上的月薪

环境

java1.8、idea2018、springboot

帮助人群

java软件工程师、java后端开发、准备面试的java软件开发、多线程

Callable和Future

Callable和Future解决了Runnable不能返回值或抛出异常的问题。

Future:可以用来查看任务的生命周期以及操作任务,如获取任务结果、取消任务

方法:

  • cancel():尝试取消任务。
  • isCancelled():
  • isDone():
  • get():返回计算结果。
  • get(timeout):可以设置超时时间。

总结

  • 多线程不要乱用,尽量先串行,当生产环境真的不能应付在考虑并行。
  • 面试多线程时,多多结合实战跟面试官分讲讲。

学好了多线程技术,程序员就有底气拿23K以上的月薪_第1张图片

 

线程池【概念复习】

作用:

(1)、通过重复利用线程,减少线程的创建销毁损耗的资源

(2)、提高响应速度,任务到达时,不用重新创建线程,之间可以使用已经创建好的线程执行。

(3)、提高线程的可管理性

ThreadPoolExecutor可配置项:

  • 线程池初始大小
  • 最大大小
  • 存活时间

学好了多线程技术,程序员就有底气拿23K以上的月薪_第2张图片

 

线程的开销

  • 生命周期的开销:线程的创建、调度和生命周期管理都由操作系统实现,无论在哪款操作系统下,这些操作的开销都很可观。
  • 内存占用:一个线程占用的栈资源大概在1-2M左右,那么线程数达到千级别时这个开销就很可观。
  • 稳定性:不同操作系统和JVM配置下,线程数量将受到栈空间或系统的限制,过多的线程并不会再提升性能

合理配置线程池大小

  • 一般需要根据任务的类型来配置线程池大小:
  • 如果是CPU密集型任务,就需要尽量压榨CPU,参考值可以设为 NCPU+1
  • 如果是IO密集型任务,参考值可以设置为2*NCPU

当然,这只是一个参考值,具体的设置还需要根据实际情况进行调整,比如可以先将线程池大小设置为参考值,再观察任务运行情况和系统负载、资源利用率来进行适当调整。

学好了多线程技术,程序员就有底气拿23K以上的月薪_第3张图片

 

学好了多线程技术,程序员就有底气拿23K以上的月薪_第4张图片

 

你可能感兴趣的:(程序员,Java)