入坑准备

发布时间:2022-07-06 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了入坑准备脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

一、一些基本概念

 

1、线程是什么

  线程(英语:thread)是操作系统能够进行运算调度的最小单位。

2、进程是什么

  进程(PRocess)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资分配和调度的基本单位,是操作系统结构的基础。

3、线程与进程的关系

  线程是进程实际的执行单位

4、线程的切换

  从JVM上来理解,JVM的运行时内存区-

    PC:程序计数器(线程私有)

  假设线程A执行到一,突然切换到线程B。等B分配的执行时间结束后。怎么知道A执行到哪里了?--从PC得知

 

  从内存模型来理解:

    工作内存是独立的,所以线程之间的数据其实是独立的。但实际上线程可能会调用到静态变量,这部分的数据是可以多个工作线程读写的。

 

5、单核CPU设定多线程是否有意义

  多线程概念-并发。与并行不同,并行就像是杨过和小龙女一起使出玉女剑法;并发就是小龙女自己左右互搏。。。。

  所以,你如果问我单核CPU搞并发有没有用?那我问你,小龙女自己单手用招能不能打过全真教那几位道士?

  

  严肃点。。。

  计算机的性能制约点:IO、计算。IO又分很多种:内存、硬盘、网络、CPU缓存

  假设在读硬盘的时候很慢,我是不是能在这个时候先去干点别的。而不要让程序呈现假死的情况?

  这样可能还不是那么好理解,我们假设 A系统在调用B系统,此时B系统(具备独立计算、IO能力,需要10秒才能返回结果)。那么你希望A系统就卡在这10秒吗?

 

6、线程数是不是越大越好

  这就涉及性能极限值了,首先肯定不是越大越好。但是要找到合适的线程数,需要通过压测。

 

7、线程数的选择

  压测,有个教授的公式。总体上要先看当前系统是偏向计算型还是IO型,一般IO型可能就不需要选择太多的线程数,计算型的可能就需要多分配些,但也不是绝对的

 

8、创建线程的几种方式

  。。。其实个人认为只有一种,new Thread。

  执行线程的多种方式的话:

    new Thread().start()

    new Runable(),最终用线程对象或线程池承载执行

    new Callable(),有返回对象的Runable

 

二、线程状态

  • NEW
  • Runable
  • TERMINATED
  • Wating (LockSupport.park())
  • TimedWating
  • Blocked(Synchronized) 

 

三、线程打断

  • stop【过时】
  • interrupt、interrupted
  • susPEnd(暂停),resume(恢复)

 

四、并发三大特性

  • 可见性 - 其他线程可见,数据可共享
  • 有序性 - 执行不可乱序
  • 原子性 - 全部成功,全部失败

五、锁升级

  偏向锁(门上写个纸条,有人在上厕所)-》自旋锁 - 很多人都想上厕所(在门外转悠,看啥时候能轮到自己)-》重量级锁 - 非常多人来或者一直有人插队(厕所所长来安排)

六、ThreadPool

  • Single,有序
  • Fix,固定线程数
  • Cache,无边界
  • Schdule,定时

七、TPE源码

  • CAS,线程数量和状态通过一个原子变量的高低位来控制
  • 五种状态:
    • Running 运行中
    • Shutdown 关机
    • Stop 停止
    • Tidying 整理
    • Terminated 终止

 

  

脚本宝典总结

以上是脚本宝典为你收集整理的入坑准备全部内容,希望文章能够帮你解决入坑准备所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。