前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >并发的本质是什么?

并发的本质是什么?

作者头像
王小明_HIT
发布2020-08-27 10:59:05
1.1K0
发布2020-08-27 10:59:05
举报
文章被收录于专栏:程序员奇点程序员奇点

并发的本质是什么?

进程是分配资源的基本单位,线程是调度的基本单位。每个线程有一组寄存器,堆栈,一个程序计数器。

并发的核心是如何处理好多线程的分工,同步和互斥的问题。

并发编程的本质是为了解决:可见性,原子性,有序性三大问题。

并发其实是利用多线程技术,在现代 CPU 的背景下,催生了并发编程的趋势,通过编程编程的形式可以将多核 CPU 的计算能力发挥到极致。

并发的优势

并发编程的优势:并发可以充分利用 CPU 计算能力,提升性能。

并发缺点

在高并发场景下,频繁的上下文切换会损耗性能。临界区线程全问题,线程容易产生死锁。

CPU 通过事件片来循环执行任务。当前任务执行一个时间片后切换到下一个任务,会在切换前保存上一个任务状态,方便切换回这个任务,可以加载这个任务的状态。

线程

  • 用户线程(User-Level Thread)
  • 内核线程(kernel-Level Thread)

用户线程

指不需要内核支持而在用户程序中实现的线程,不依赖操作系统核心,应用进程利用线程库提供创建,同步,调度和管理线程的函数控制用户线程。

内核线程

线程的管理操作都由操作系统内核完成。内核保存线程的状态和上下文信息,当一个线程执行了引起了阻塞系统调用时,内核可以调度该进程的其他线程执行,在多线程系统上,内核可以分派系统进程多个处理器运行。

Java 线程与系统内核线程

Java 创建线程

new java.lang.Thread().start(),使用JNI将一个native thread attach到JVM中针对 new java.lang.Thread().start()这种方式,只有调用start()方法的时候,才会真正的在JVM中去创建线程

主要的生命周期步骤有

  • 创建对应的JavaThread的instance
  • 创建对应的OSThread的instance
  • 创建实际的底层操作系统的native thread
  • 准备相应的JVM状态,比如ThreadLocal存储空间分配等
  • 底层的native thread开始运行,调用java.lang.Thread生成的Object的run()方法
  • 当java.lang.Thread生成的Object的run()方法执行完毕返回后,或者抛出异常终止后,终止native thread
  • 释放JVM相关的thread的资源,清除对应的JavaThread和OSThread
  • 针对JNI将一个native thread attach到JVM中,主要的步骤有
  • 通过JNI call AttachCurrentThread申请连接到执行的JVM实例

Java 线程的生命周期

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员奇点 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 并发的本质是什么?
    • 并发的优势
      • 并发缺点
        • 线程
          • 用户线程
          • 内核线程
        • Java 线程与系统内核线程
          • Java 创建线程
            • Java 线程的生命周期
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档