zoukankan      html  css  js  c++  java
  • Java高并发和多线程系列

    1. 什么是线程? 线程和进程的区别

    在了解线程的概念前,我们应该先知道什么是进程?

    进程是操作系统的基本概念之一, 它是正在执行的程序实例。

    * 下面的一些进程的基本概念你可以了解下 

    --------------------------------------------------------------------

    操作系统逻辑上将一个进程分为以下几部分(段):

    # 文本

      程序的指令

    # 数据

      程序使用的静态变量

    # 堆

      程序可从该区域动态分配额外内存

    # 栈

      随函数调用和返回而增减的一片内存, 用于为局部变量和函数调用链接信息分配存储空间

    --------------------------------------------------------------------


    那么,什么是线程呢?

    线程是程序执行的最小单位。

    我们可以把线程看做是轻量级的进程。

    使用多线程而不是多进程去进行并发程序的设计,是因为线程间的切换和调度成本要远远小于进程。

    2. 线程的生命周期和各个状态

    NEW(新生)

    线程刚被新建好之后,进入 NEW(新生)状态

    这个时候线程还没开始执行

    RUNNABLE(运行)

    当线程的start()方法调用时, 才表示线程开始执行。

    BLOCKED(阻塞)

    如果线程在执行的过程中遇到了synchronized同步块, 就会进入

    BLOCKED(阻塞)状态, 这时线程会暂停执行,知道获得请求的锁。

    WAITING / TIMED_WAITING

    这两个状态都是线程进入等待状态

    区别是: WAITING(无时间限制) / TIMED_WAITING(有时间限制)

    wait()方法会让线程进入等待队列

    notify()方法会在等待队列中将线程唤醒

    join()方法让线程进入等待队列,等目标线程终止

    TERMINATED(终止)

    当线程执行完毕后,则进入TERMINATED(终止)状态

  • 相关阅读:
    构建之法阅读笔记06
    钢镚儿开发前会议
    构建之法阅读笔记05
    4.11第8周学习总结
    人月神话阅读笔记01
    构建之法阅读笔记04
    4.4日学习总结
    构建之法阅读笔记03
    3.28第六周学习内容总结
    二人团队项目增删改查
  • 原文地址:https://www.cnblogs.com/davidgu/p/8853970.html
Copyright © 2011-2022 走看看