线程

一、线程的定义

定义1:CPU执行的基本单元,同一类线程将共享代码和数据空间,每个线程有独立的程序计数器(PC)、寄存器集、运行栈空间以及OS的资源。

定义2:程序内部的一个顺序控制流。

定义3:程序内不同的执行线索(路径)。

二、多线程与处理器(CPU)

(1)定义:多线程是指一个进程在执行过程中可以产生多个线程,这些线程可以同时存在、同时运行,形成多条执行线索。

(2)多个CPU同时支持多线程(例如多核)
单个CPU也可以支持多线程(分时操作系统)
多个处理器以时间分片的方式支持多线程(在某个时间点只执行一个线程)

(3)为什么需要多线程?
答:1)需要驱动:a、并发处理:并发的方式解决了并发的问题(在一段时间内处理很多事情)
   b、性能的提高
   c、更容易实现任务间资源的共享
   d、提高交互应用程序的响应性
   e、比进程的开销要低(硬件的资源和软件的应用最大化)

(4)使用多线程的代价
1)复杂性明显的增加(任务间的通信和同步)
2)多线程应用程序的设计要求(并发的本质上有相当的复杂性(同步、死锁、公平、饥饿......))
3)难以调试和测试(不确定性)

 (5)同步(synchronized):等待,多个线程依次(排队)执行,也就是说同一时间只能执行一个线程,性能差但安全(StringBuffer)
   异步:同时,在同一段时间可以做很多事情,例如AJAX
   线程安全:支持多线程,支持异步,且数据不会冲突
   线程不安全:支持多线程,支持异步,且数据可能会冲突(StringBuilder)
注意:只有在多线程的情况下才考虑线程安全不安全。

     (6)线程与进程

7)实现线程
1)通过继承Thread类实现多线程
2)通过实现Runnable接口实现多线程

实现 Runnable 接口相对于继承 Thread 类来说,有如下显著的优势:
(1)、 适合多个相同程序代码的线程去处理同一资源的情况,把虚拟 CPU(线程)同程序的代码、数据有效分离,较好地体现了面向对象的设计思想。
(2)、 可以避免由于 Java 的单继承特性带来的局限。开发中经常碰到这样一种情况,即:当要将已经继承了某一个类的子类放入多线程中,由于一个类不能同时有 两个父类,所以不能用继承 Thread 类的方式,那么就只能采用实现 Runnable 接口的方式了。
(3)、 增强了程序的健壮性,代码能够被多个线程共享,代码与数据是独立的。当多个线程的执行代码来自同一个类的实例时,即称它们共享相同的代码。多个线程 可以操作相同的数据,与它们的代码无关。当共享访问相同的对象时,即共享相同的数据。当线程被构造时,需要的代码和数据通过一个对象作为构造函数实 参传递进去,这个对象就是一个实现了Runnable 接口的类的实例。
事实上,几乎所有多线程应用都可用第二种方式,即实现 Runnable 接口。


 (8)线程的状态
                               
(9)线程的方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CSDN海神之光上传的全部代码均可运行,亲测可用,尽我所能,为你服务; 1、代码压缩包内容 主函数:main.m; Fig:GUI操作界面; 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,可私信博主; 3、运行操作步骤 步骤一:将所有文件放到 Matlab的当前文件夹中; 步骤二:双击打开main.m文件;(若有其他m文件,无需运行) 步骤三:点击运行,等程序运行完得到结果; 4、语音处理系列仿真咨询 如需其他服务,可私信博主或扫描博主博客文章底部QQ名片; 4.1 CSDN博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作 语音处理系列程序定制或科研合作方向:语音隐藏、语音压缩、语音识别、语音去噪、语音评价、语音加密、语音合成、语音分析、语音分离、语音处理、语音编码、音乐检索、特征提取、声源定位、情感识别、语音采集播放变速等; CSDN海神之光上传的全部代码均可运行,亲测可用,尽我所能,为你服务; 1、代码压缩包内容 主函数:svddwt.m; 调用函数:其他m文件; 语音信号,其格式为MP4; 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,可私信博主; 3、运行操作步骤 步骤一:将所有文件放到 Matlab的当前文件夹中; 步骤二:双击打开svddwt.m文件;(若有其他m文件,无需运行) 步骤三:点击运行,等程序运行完得到结果; 4、智能优化算法背包问题系列仿真咨询 如需其他服务,可私信博主或扫描博主博客文章底部QQ名片; 4.1 CSDN博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作 语音处理系列程序定制或科研合作方向:语音隐藏、语音压缩、语音识别、语音去噪、语音评价、语音加密、语音合成、语音分析、语音分离、语音处理、语音编码、音乐检索、特征提取、声源定位、情感识别、语音采集播放变速等;

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值