多线程基础概述(一)

计算机cpu,核心数,线程数之间的关系

CPU:物理上真实存在,是一块芯片,相当于人体的大脑,是计算机处理逻辑的中枢
核心数:物理上不存在,逻辑上存在,一块cpu可以分成多个核心数,一个核心数相当于一个人体的大脑,即核心相当于逻辑上的cpu
线程数:逻辑上存在,在同一时刻,允许同时处理事情的件数,相当于人脑的一心多用

原来的核心数与线程数的比例为1:1,但是随着超线程技术的兴起,现在技术可以实现1:2的关系,即一个核心能同时处理2件事情,现在能理解双核4线程的含义了吧。再补充一句,计算机上可以有多个CPU芯片。

计算机线程数和java线程数的关系

计算机多线程和java线程没什么直接的关系,例如,当计算机为双核4线程时,java同时开启了5个线程该怎么执行,这就涉及到了cpu的执行算法:时间轮询算法(下面会具体概述)。即同一时刻计算机为4线程,则能同时处理java中4个线程任务,而最后一个线程则处于等待状态,等待某一线程执行结束且cpu分配执行权给该java线程后,才能处理该线程

时间片轮转调度算法

时间片轮转调度算法是一种最简单,最古老,最公平且使用最广泛的算法。每个进程被分配一时间段,称作它的时间片,即该进程允许运行的时间。其实现的基本原理是:计算机将所有就绪的进程按照先来先服务(先进先出)的原则,排成一个队列,每次调度时,把cpu执行权分配给队首进程,并令其执行一个时间片,时间片的大小从几毫秒到几百毫秒,当时间片的时间用完时,由一个计时器发出中断请求,该进程将被剥夺执行权,并将其送往就绪队列的末尾;然后,再将cpu执行权分配给就绪进程队列的新的队首进程,重复上面的执行流程,这样的算法能保证就绪队列中所有进程在一给定的时间内,都能获取cpu的执行权。

补充
在cpu给定进程的执行权后,进程会将执行权给予该进程中就绪线程队列的队首线程,若在时间片的时间用完时,该线程也将送往就绪线程队列的末尾。

进程和线程

  • 进程:程序运行资源分配最小单位,进程内部有多个线程,多个线程间共享
    这个进程资源,如QQ,天猫网站等都是一个独立的进程
  • 线程:cpu调度的最小单位,必须依赖于进程存在

并行与并发

  • 并行:同一时刻,可以处理事情的能力
  • 并发:与单位时间相关,在单位时间内能处理事情的能力,如并发量为每秒一千次点击,说明该系统操作能在1秒内同时处理一千次请求

并发编程的优缺点

  • 优点:

能充分利用cpu资源,加快用户的响应时间

  • 缺点

线程中的利用共享资源时,容易造成冲突
容易造成死锁
线程启动过多,上下文切有可能造成资源更大的浪费

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值