线程-创建线程的方法、线程池

1.创建线程一共有哪几种方法?

继承Thread类创建线程

     继承Thread类,重写run()方法,在main()函数中调用子类的strat()方法

实现Runnable接口创建线程

        先创建实现Runnable接口的类,重写run()方法,创建类的实例对象,将对象作为参数创建Thread对象,调用Thread对象的start()方法。

使用Callable和Future创建线程

        创建Callable接口实现的类,重写call()方法,创建该类的实例对象,作为参数创建FutureTast对象,然后以FutureTask对象作为参数创建Thread对象,调用Thread对象的start()方法。

使用线程池创建

        使用ThreadPoolExcutor创建线程,可以准确的控制创建的数量、最大等待数量,拒绝策略等

1.corePoolSize 核心池子的数量(大小)默认是先不创建线程,有任务到达后,再创建,之后就不销毁了

2.maximumPoolSize 最大池子数量

3.keepAliveSize:非核心线程池中的线程,在多久之后没有任务执行时销毁

4.TimeUint : 时间单位,7种静态属性

  

5.workQueue: 等待队列  设置队列数量 20

6.threadFactory :创建线程的工厂

7.Handler 拒绝策略

1.AbortPolicy策略:直接抛出异常

2.CallerPolicy:提交任务的线程执行,

3.DiscardOldestPolicy:丢弃队列中等待时间最长的任务

4.DiscardPolicy:直接丢弃任务,不予理睬

向线程池提交任务有两种方式:

execute:提交实现了Runnable ,没有返回值

submit:提交实现了RunnableCallable

区别:execute 适用于不需要关注返回值的场景,submit 方法适用于需要关注返 回值的场景。

 

execute方法执行流程图: 

线程池的优点:(模拟面试没有回答上)

1.重复利用线程,降低线程创建和销毁带来的资源消耗
2.统一管理线程,线程的创建和销毁都由线程池进行管理
3.响应速度,线程创建已经完成,任务来到可直接处理,省去了创建时间

2.线程通信的方法有哪些?

       

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/527607.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【go语言开发】redis简单使用

本文主要介绍redis安装和使用。首先安装redis依赖库,这里是v8版本;然后连接redis,完成基本配置;最后测试封装的工具类 文章目录 安装redis依赖库连接redis和配置工具类封装代码测试 欢迎大家访问个人博客网址:https://…

二叉树进阶--二叉搜索树的进一步优化--AVL树 Self-balancing binary search tree

前言: 在上一次的文章中,我们详细介绍了二叉树的进阶树型,即BS树(二叉搜索树),但在文章的结尾,二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表…

【物联网】-智能社会的分类

万物感知 感知物理世界,变成数字信号 (温度、空间、触觉、嗅觉、听觉、视觉) 万物互联 将数据变成online,使智能化 (宽联接、广联接、多联接和深联接) 万物智能 基于大数据和人工智能的应用 &#…

多模太与交叉注意力应用

要解决的问题 对同一特征点1从不同角度去拍,在我们拿到这些不同视觉的特征后,就可以知道如何从第一个位置到第二个位置,再到第三个位置 对于传统算法 下面很多点检测都是错 loftr当今解决办法 整体流程 具体步骤 卷积提取特征,…

双体系Java学习之循环结构

循环结构 package struct;public class WhileDemo01 {public static void main(String[] args) {//输出1-100int i 0;while (i<100){i;System.out.println(i);}} }package struct;public class WhileDemo02 {public static void main(String[] args) {//死循环while (true)…

OpenCV filter2D函数详解

OpenCV filter2D函数简介 OpenCV filter2D将图像与内核进行卷积&#xff0c;将任意线性滤波器应用于图像。支持就地操作。当孔径部分位于图像之外时&#xff0c;该函数根据指定的边界模式插值异常像素值。 该函数实际上计算相关性&#xff0c;而不是卷积&#xff1a; filter…

C++20四大特性之Ranges

C20 Ranges 1.基础概念2.使用 在之前的文章已经写过另外三大特性&#xff0c;直通点&#xff1a; C那些事之C20协程开篇 盘点C20模块那些事 C20&#xff1a;从0到1学懂concept 那么&#xff0c;本篇将开始学习另外一个特性ranges。 ranges是C20的主要特性之一&#xff0c;其中&…

WebRTC简介及实战应用 — 从0到1实现实时音视频聊天等功能

一、WebRTC简介 WebRTC 是由一家名为 Gobal IP Solutions,简称 GIPS 的瑞典公司开发的。Google 在 2011 年收购了 GIPS,并将其源代码开源。然后又与 IETF 和 W3C 的相关标准机构合作,以确保行业达成共识。其中: Web Real-Time Communications (WEBRTC) W3C 组织:定义浏览…

Nginx的页面优化,安全优化,日志分割,配置防盗链,图片缓存,解决部分问题

一、隐藏版本号 他人可以使用调试代理工具&#xff08;fiddler工具&#xff09;、浏览器插件等&#xff0c;通过识别网站的响应头信息来获取你的 Nginx 版本号。为了增强服务器的安全和隐私&#xff0c;可以进行隐藏版本号&#xff0c;也可以在 nginx.h 文件中修改服务名称和版…

力扣同类题:重排链表

很明显做过一次 class Solution { public:void reorderList(ListNode* head) {if(!head||!head->next)return;ListNode *fasthead,*lowhead;ListNode *prenullptr,*curnullptr,*nextnullptr;while(fast->next!nullptr){fastfast->next;if(fast->next)fastfast->…

Yolov8-pose关键点检测:特征融合涨点篇 | 广义高效层聚合网络(GELAN) | YOLOv9

💡💡💡本文独家改进:即结合用梯度路径规划(CSPNet)和(ELAN)设计了一种广义的高效层聚合网络(GELAN),高效结合YOLOv8-pose,实现涨点。 将GELAN添加在backbone和head处,提供多个yaml改进方法 Yolov8-Pose关键点检测专栏介绍:https://blog.csdn.net/m0_6377421…

开源组件安全风险及应对

在软件开发的过程中&#xff0c;为了提升开发效率、软件质量和稳定性&#xff0c;并降低开发成本&#xff0c;使用开源组件是开发人员的不二选择&#xff08;实际上&#xff0c;所有软件开发技术的演进都是为了能够更短时间、更低成本地构建软件&#xff09;。这里的开源组件指…