JUC并发编程第一篇,复习线程基础知识

一、为什么多线程极其重要?

  • 硬件方面:摩尔定律失效

摩尔定律
价格不变时,集成电路上可容纳的元器件的数目约每隔18-24个月便会增加一倍,性能也将提升一倍。

摩尔定律失效
从2003年开始CPU主频已经不再翻倍,而是采用多核而不是更快的主频。
在主频不再提高且核数在不断增加的情况下,要想让程序更快就要用到并行或并发编程。

  • 软件方面:

高并发系统,异步+回调等生产需求

二、从start一个线程开始认识多线程

对于线程的使用,大家再熟悉不过了,最简单的就是new一个线程,调用它的 start() 方法,这个线程就启动了。但是它到底是怎么做到的呢?可以点进去源码看一下:

  • 当我们 start() 一个线程的时候,其实是调用了 Thread.java 类里边的 private native void start0();
    在这里插入图片描述
  • 但是到这就结束了吗?其实并没有,Java语言底层是C++语言写的,所以想要继续往下看,可以到官网下载 OpenJDK源码(http://openjdk.java.net/)
  • Openjdk的写JNI一般是一一对应的,Thread.java对应的就是Thread.c
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 最后可以看到,操作线程其实是对操作系统的调用。

三、进程、线程和管程

进程:是操作系统资源分配的最小单元,是操作系统对一个正在运行的程序的一种抽象,每⼀个进程都有它⾃⼰的内存空间和系统资源

线程:是操作系统能够进行运算调度的最小单元,⼀个进程会有1个或多个线程。

管程:Monitor(监视器),就是我们平时所说的锁。Monitor其实是一种同步机制,他的义务是保证(同一时间)只有一个线程可以访问被保护的数据和代码。

四、用户线程和守护线程

线程的daemon属性为true表示是守护线程,false表示是用户线程

守护线程:是一种特殊的线程,在后台默默地完成一些系统性的服务,比如垃圾回收线程
用户线程:是系统的工作线程

注意:当程序中所有用户线程执行完毕之后,不管守护线程是否结束,系统都会自动退出
设置守护线程,需要在start()方法之前进行


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Anton丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值