Java多线程-Thread&ThreadPool

1. 什么是多线程编程
顺序执行没有依赖关系的操作,并行化。从而提高减少耗时。

2. java怎么启动一个线程去异步执行任务

  • extends Thread类
  • implements Runnable接口
  • implements Callable接口(带返回值)

3. java线程生命周期,结合Thread线程的各个方法
在这里插入图片描述
running = 就绪(等待cpu时间片轮转)+运行(已拿到cpu资源)

终止一个线程的方法(不可以中断一个正在运行的线程):
stop();(被弃用)
interrupt();

4.java线程池概念
对于多线程编程,处理每个请求都要创建一个线程,这不仅要花费时间在创建线程的过程中,还会出现创建线程过多未释放导致的系统内存不足问题,因此引入线程池的概念。线程池,就是在一个容器中创建适量的线程,在程序访问的时候直接获取线程并使用
类似数据库连接池,没连接池时访问一次数据库便建立一个Connection,用完,连接释放,添加数据库连接池后,是连接先建立好或者使用时建立,用完,不释放,而是放在数据库连接池中,供下一次请求调用。
在这里插入图片描述

5. java怎么使用一个线程池去异步执行任务

  • FixedThreadPool
  • SingleThreadPool
  • CachedThreadPool(按需分配,keppAliveTime不用则被终止)
  • 使用ThreadPoolExecutor自定义线程池大小等参数信息。

6.java线程池实现流程
在这里插入图片描述

7.工具监控,查看当前运行的线程
JVisualVM
Jstack -l pid

8.线程池执行过程中线程抛出异常 会让线程挂掉吗?

  • submit 方法提交任务 (线程不会挂,会直接吞掉异常,通过get()方法可重新抛出异常)
  • execute方法提交任务(直接抛出异常,线程会挂掉,且会重新创建一个新线程代替挂掉的线程)
  • 对此处仔细介绍的链接: http://ifeve.com/%E6%B7%B1%E5%BA%A6%E8%A7%A3%E6%9E%90java%E7%BA%BF%E7%A8%8B%E6%B1%A0%E7%9A%84%E5%BC%82%E5%B8%B8%E5%A4%84%E7%90%86%E6%9C%BA%E5%88%B6/
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值