为什么要使用多线程

使用java多线程码代码有几年了,自己未仔细考虑过为什么要使用多线程,下面就自己查阅的一些资料进行记录一下。

  1. 摩尔定律失效
    当前的科学技术水平无法使CPU频率继续提升,硬件工程师们异想天开的将多个cpu核心(ALU等)集成到一个CPU中,或者干脆多个CPU借助特殊板子来协同工作(简书介绍:https://www.jianshu.com/p/7969ea0d5526;英特尔官网:https://ark.intel.com/content/www/cn/zh/ark.html#@PanelLabel122139)。
  2. 操作系统支持
    操作系统层面需要对多核心进行并发支持,Linux通过多进程实现并发操作,Linux中有一个子进程的概念,子进程集成父进程大部分属性,在unix中,子进程通常为系统调用fork的产物。windows对子进程支持不是太好,大部分采用一个进程下面采用多线程并发模式。
  3. 程序语言层面支持
    适应操作系统对硬件架构的支持,从语言层面提供多线程开发支持。

小结:如果硬件足够快,我们也许可以不用多线程这个操蛋玩意。

相关概念:

  1. 进程是操作系统关于资源分配和调度的一个独立单位,是程序关于某个数据集合上的一次运行活动。
  2. 线程是cpu调度的最小单位,必须依赖与进程而存在。

并发编程意义:

  1. 充分利用CPU资源。
  2. 加快响应用户的时间。
  3. 可以使你的代码模块化、异步化、简单化。

并发编程需要注意的问题:

  1. 线程之间的安全性需要把握。
  2. 避免线程之间死锁问题。
  3. 避免线程过多导致服务器资源耗尽的问题。

并发数计算公式(按1秒时间段计算):
1000(1000毫秒)* CPU数量 * 核心数量/(CPU切片轮换时间 + 程序执行时间)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值