当前位置: 首页 > news >正文

java 线程

1.Java中有哪几种方式来创建线程执行任务

1.继承Thread类(单继承)

2.Runnable接口(没有继承限制)但是无法返回值

3.callable接口结合FutureTask

4.利用线程池来创建线程使用Executor Service调用execute通过runnable创建

底层都是基于runnable

2.为什么不建议使用Executors来创建线程池

1.如果创建的队列为Linked Blocking Queue是一个无界堵塞队列,如果使用该线程池执行任务,如果任务过多就会不断的添加到队列中,任务越多占用内存就越多,最终可能耗尽内存,导致OOM

不推荐使用内置的,可以自己new一个ThreadPoolExecutor

3.线程池中有哪几种状态,每种状态分别是什么

五种状态

running(运行状态)

shutdown(关闭状态)队列中如果有任务,还是会执行完毕

stop(停止状态)调用了shutdownnow状态

tidying(整理状态)中间状态,没有任何处理,保持原子性

terminated(终止状态)

ctl除了会存状态,还会存线程池的总数量 他有32个bite位,高三位存状态,低29位用来存线程池的数量。


http://www.mrgr.cn/news/11022.html

相关文章:

  • 深入理解微服务中的负载均衡算法与配置策略
  • 第一人称跟随视角与固定(2d)视角的转换
  • 从PCB开始研究FPGA设计问题
  • 【渗透测试】ATTCK靶场一,phpmyadmin,域渗透,内网横向移动攻略
  • 命令模式在手游后端的应用
  • python_每天定时向数据库插入数据
  • Kubernetes存储入门
  • 【创作活动】你是如何克服编程学习中的挫折感的
  • 第四节:Nodify 连接端子手动连接
  • 代码随想录算法训练营day53:图04:104.建造最大岛屿;110. 字符串接龙;105.有向图的完全可达性
  • Mac外接4K显示器 字体大小适应 设置HIDPI
  • 开源低代码LLM编排平台Dify:可视化Agent和工作流,如何部署在自己系统中,自定义修改前后端详解
  • PHP在现代Web开发中的高效应用与实战案例
  • SpringMVC - 第一个 SpringMVC 程序
  • OpenCV+Python自动填涂机读卡
  • OpenCV绘图函数(2)绘制圆形函数circle()的使用
  • 用Python插入SVG到PDF文档
  • 数学建模学习(118):牛顿冷却定律的原理解析、案例分析与Python求解
  • 【HuggingFace Transformers】BertIntermediate 和 BertPooler源码解析
  • 沈阳网站建设手机能看的网站