多线程的创建和使用(4种)

news2024/10/6 6:47:52

1.JDK5.0之前的创建方式 

方式一:继承于Thread类

1.创建一个继承于Thread类的子类

2.重写Thread类的run() --> 此线程执行的作声明在run()中

3.创建Thread类的子类的对象

4.通过此对象调用start()

方式二:实现Runnable接口

1.创建一个实现了Runnable接口的类

2.实现类去实现Runnable 中的抽象方法: run()

3.创建实现类的对象

4.将此对象作为参教传递到Thread类的构造器中,创建Thread类的对象

5.通过Thread类的对象调用start()

比较创建线程的两种方式。

开发中优先选择:实现Runnable接口的方式

原因:

1.实现的方式没有类的单继承性的局限性

2.实现的方式更适合来处理多个线程有共享数据的情况

联系: public class Thread implements Runnable,Thread也实现了runnable的接口

相同点: 两种方式都需要重写run(),线程要执行的逻辑声明在run()中

 创建线程的两个问题:

 Thread类的方法:

 

 线程的优先级:

进程可以细化为多个线程。

        每个线程,拥有自己独立的: 栈、程序计数器。

        多个线程,共享同一个进程中的结构:方法区、堆。

并行与并发

        并行:多个CPU同时执行多个任务。比如:多个人同时做不同的事

        并发:一个CPU(采用时间片)同时执行多个任务。比如:秒杀、多个人做同一件事

线程的生命周期:

内存结构:

 2.JDK5.0新增的创建方式 

 方式三:实现Callable接口

1.创建一个实现Callable的实现类

2.实现call方法,将此线程需要执行的操作声明在call()中

3.创建Callable实现类的对象

4.将此Callable接口实现类的对象传递到FutureTask构造器中,创建FutureTask的对象

5.将FutureTask的对象作为参数传递Thread类的构造器中,创建Thread类的对象,并调用start()

6.获取Callable中call()的返回值(如果需要的话)

如何理解实现CalLable接口的方式创建多线程比实现Runnable接口创建多线程方式强大?

1. call() 可以有返回值的。

2. call() 可以抛出异常,被外面的操作捕获,获取异常的信息

3.Callable是支持泛型的

 实现方式:

 方式四:使用线程池

实现方式: 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第三十五章 数论——卡特兰数

第三十五章 数论——卡特兰数一、什么是卡特兰数1、推导2、公式二、卡特兰数的应用1、问题:2、分析3、代码一、什么是卡特兰数 1、推导 我们看下面这个坐标系: 我们从(0,0)(0,0)(0,0)点到(6,6)(6,6)(6,6)点的路线有很多,并且根据我们高中排…

57.return—函数的返回值

57.return-函数的返回值 文章目录57.return-函数的返回值1.定义2.分类3. 没有返回值4.有1个返回值5.有多个返回值6.一个自定义函数只执行一次return语句7.实操练习1.定义 return关键字后接变量名或表达式可以将函数的计算结果返回到调用处。 变量或表达式等同于接收果汁、豆浆…

Chronicle Pro - 一款简单 Mac 理财规划师,管理你的的个人预算

Chronicle Pro - 一款简单 Mac 理财规划师,管理你的的个人预算 使用Chronicle追踪和支付账单,管理你的个人预算,这是一款简单的Mac理财规划师。获得通知,这样你就不会错过下一个付款截止日期;你再也不用付滞纳金了。把你所有的账单…

8 GUI实例

GUI 1 Frame 用来创建窗口,构造函数如下: public Frame() throws HeadlessExceptionpublic Frame(String title) throws HeadlessException 常用方法如下: public class gui_v1 {public static void main(String[] args) {Frame f new F…

用python的turtle库画一个小猪佩奇

小猪佩奇是一个可爱的小猪。她已经四岁了,与她的妈妈,爸爸,和弟弟乔治生活在一起。佩奇最喜欢做的事情是玩游戏,打扮的漂亮,度假,以及在小泥坑里快乐的跳上跳下和与小羊苏西(她最好的朋友&#…

Nginx小结1

Nginx 是一个高性能的HTTP和反向代理web服务器,作为负载均衡器,承接的所有请求。核心功能有负载均衡、反向代理、静态资源服务器。另外Nginx还可以使用keepalive结合使用建立主备份机实现高可用。keepalive是在TCP中一个可以检测死连接的机制&#xff0c…

WordPress插件开发教程1:开发第一个WordPress插件

第一步:在 wp-content \ plugins 目录新建一个目录,随便起个名字,比如:my-first-plugin。 第二步:进入 my-first-plugin 目录,新建一个PHP文件,随便起个名字,比如:hello.…

UE解决SetActorHiddenInGame后其Collision仍然会被检测到的问题

文章目录 1.问题产生2.解决过程3.总结4.参考资料1.问题产生 (1)首先我在场景内添加了红色的球(Sphere)和绿色的面片(Plane),两者都是StaticMeshActor,如下图所示: (2)然后进入二者的静态网格体编辑窗口,将二者的碰撞复杂度都设置为UseComplexCollisionAsSimple。 …

D. Valiant‘s New Map(二分)

Problem - D - Codeforces 游戏工作室 "DbZ Games "想在他们的热门游戏 "Valiant "中引入另一张地图。这一次,名为 "Panvel "的地图将以孟买市为基础。 孟买可以被表示为nm的单元格。网格中的每个单元格(i,j)…

【数据可视化】地理信息可视化的常见算法

1. 地图投影 地理坐标:是用维度、经度表示地面点位置的球面坐标 移动开发:移动端依靠GPS获取位置信息,其获得的是经纬度的信息(WGS84) 互联网开发中,需要将WGS84转换为其他互联网地图平台支持的坐标系统…

QT 九宫格绘图(QSS方式)

什么是九宫格方式绘图? 顾名思义,就是把一个方块分割成 9 个部分,如图所示: 九宫格绘图的原理就是把背景图分割成 9 个部分,绘制时: 四个角(1、3、7、9)的大小不变左右部分&#…

C++11标准模板(STL)- 算法(std::partial_sum)

定义于头文件 <numeric> 算法库提供大量用途的函数&#xff08;例如查找、排序、计数、操作&#xff09;&#xff0c;它们在元素范围上操作。注意范围定义为 [first, last) &#xff0c;其中 last 指代要查询或修改的最后元素的后一个元素。 计算范围内元素的部分和 s…

达达盈利新故事,得靠智能化“省”出来?

&#xff08;图片来源于网络&#xff0c;侵删&#xff09; 文|螳螂观察 作者|叶小安 我们正处于一个最好的时代&#xff0c;不用出门就能享受到叫餐、代买衣物服饰、收发快递甚至是医院排队等服务&#xff0c;“万物皆可到家、万物即到”&#xff0c;正成为时代的潮流。 不…

【信管5.4】进度管理知识点汇总

进度管理知识点汇总在项目进度管理这一块&#xff0c;我们突然一下就接触到了不少的计算操作&#xff0c;而且接触到的工具概念也相比范围管理来说多了很多。因此&#xff0c;我们在这里进行一次小的总结。活动顺序与逻辑关系还记得什么是活动吧&#xff1f;活动就是 WBS 再次分…

NFS And Autofs

NFS&#xff08;network file system&#xff09; 挂载NFS 文件系统。NFS是一个标准的网络协议用在linux与unix之间,版本7默认使用的是NFSV4&#xff0c;NFSv4使用TCP协议&#xff0c;旧版本的NFS使用TCP或者UDP协议。 *手动挂载NFS使用mount. *自动挂载使用/etc/fstab *挂载NF…

FFmpeg常用推流命令

一、FFmpeg推RTMP流准备工作 首先确保自已已经安装了nginx rtmp服务器。 打开配置文件nginx.conf 完成如下配置 如果没有nginx rtmp服务器&#xff0c;请阅读这一篇简书文章 Mac搭建nginxrtmp服务器 二、FFmpeg推流 1.推流MP4文件 视频文件地址&#xff1a;/Users/xu/Desk…

美创DSM数据安全管理平台获华为鲲鹏技术认证!

近期&#xff0c;美创DSM数据安全管理平台通过华为鲲鹏的相互兼容性测试与认证&#xff0c;这标志着数据安全管理平台对国产信创服务器的支持&#xff0c;实现自研、国产化和自主可控。 华为鲲鹏技术认证是华为推出的一项生态合作伙伴计划&#xff0c;要求测试产品自主、可控…

健康体检管理系统源码 运营级PEIS系统源码 PEIS健康体检系统源码 PEIS源码 B/S架构开发

开发语言:ASP.NET C#,数据库:SQLserver2008R2&#xff0c;开发工具:VS2010。 前台工作&#xff1a; 预约、前台登记、照片采集、导检单打印、检验申请单打印、检前签到、检后签到、 团体设置、合并团体&#xff08;逻辑&#xff09; 医生工作&#xff1a; 数据集中录入、数…

国产linux系统使用 PageOffice 在线打开 word 文件

一、客户端环境 1、操作系统 银河麒麟&#xff0c;中标麒麟&#xff0c;统信UOS 2、芯片 芯片&#xff08;CPU)&#xff1a;x86&#xff08;Intel、兆芯&#xff09; &#xff0c;ARM&#xff08;飞腾、鲲鹏&#xff09;&#xff0c;龙芯 3、浏览器 360安全浏览器 奇安信…

NNOM神经网络语音降噪

目录 1. 问题记录和解决 2. C工程建立和运行 1. 问题记录和解决 &#xff08;1&#xff09;python语音处理依赖库soundfile 在miniconda的powershell中执行指令&#xff1a; pip install soundfile –i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com &a…