`

Java高并发和多线程系列 - 1. 线程基本概念

 
阅读更多
1. 什么是线程? 线程和进程的区别

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

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

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

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

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

# 文本

  程序的指令

# 数据

  程序使用的静态变量

# 堆

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

# 栈

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

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


那么,什么是线程呢?

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

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

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



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

NEW(新生)

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

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



RUNNABLE(运行)

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



BLOCKED(阻塞)

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

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



WAITING / TIMED_WAITING

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

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

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

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

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



TERMINATED(终止)

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

分享到:
评论

相关推荐

    高并发多线程处理demo-java.rar

    这个"高并发多线程处理demo-java.rar"压缩包提供了一个实际的Java实现,展示了如何构建一个并发队列来接收数据,并通过多线程进行处理。以下是对这个实例中的知识点进行的详细解释: 1. **Java多线程**:Java通过`...

    【IT十八掌徐培成】Java基础第21天-05.URL-多线程下载-断点续传-Properties.zip

    Java提供了`java.lang.Thread`类来创建和管理线程,同时`java.util.concurrent`包提供了高级并发工具如`ExecutorService`和`Future`,使得多线程的管理和控制更为便捷。在实现多线程下载时,一般会将大文件分成多个...

    【IT十八掌徐培成】Java基础第17天-04.多线程复制-1avi.zip

    在IT领域,尤其是在Java编程中,多线程是不可或缺的一部分,尤其对于大型、高并发的应用程序来说更是如此。本资源“【IT十八掌徐培成】Java基础第17天-04.多线程复制-1avi.zip”聚焦于Java中的多线程概念和实践,...

    【IT十八掌徐培成】Java基础第08天-02.多线程-join-daemon-同步.zip

    在Java中,`join()`、`daemon`线程以及同步机制是多线程编程中的重要概念,对于理解和编写高效的并发代码至关重要。 首先,我们来讨论`join()`方法。在多线程环境中,有时候我们需要确保一个线程在执行完它的任务后...

    java多线程学习-java.util.concurrent详解(一) Latch/Barrier

    `java.util.concurrent`包是Java提供的一个强大的多线程工具库,其中包含了许多类和接口,如`CountDownLatch`和`CyclicBarrier`,它们为程序员提供了更高级别的同步和协调机制。这篇文档将详细解析这两个工具类的...

    多线程与高并发-电子.pdf

    多线程与高并发是计算机科学中非常重要的两个概念,它们在提高软件程序的性能、响应速度和资源利用率方面起着至关重要的作用。在当今的互联网时代,特别是在产业互联网和5G技术的推动下,多线程和高并发的应用变得...

    JAVA-JavaThreadProgramming-Sams.zip_JAVA 设计_java 多线程_java 线程_多线程

    总之,Java多线程编程涉及到的概念和技巧广泛,理解并掌握这些知识对于任何Java开发者来说都至关重要,无论是在桌面应用、服务器端开发还是移动应用领域。通过学习本资料,开发者可以深入理解如何在Java中有效地利用...

    java基础--11.多线程-1

    在Java编程语言中,多线程是核心特性之一,它允许程序同时执行多个任务,从而提高了应用程序的效率和响应性。本节我们将深入探讨Java中的多线程概念,包括其重要性、创建方法以及相关机制。 一、多线程的重要性 1....

    Java并发编程-3.pdf

    Java并发编程中的多线程协作机制 在 Java 并发编程中,多线程协作机制是非常重要的一部分。多线程协作机制是指在多线程编程中,多个线程之间如何协作、同步和通信,以达到共同完成某个任务的目的。Java 提供了多种...

    Java 高并发多线程编程系列案例代码

    Java 高并发多线程编程系列案例代码 & 教程 & 面试题集锦! !! 包括但不限于线程安全性, atomic包下相关类、CAS原理、Unsafe类、synchronized关键字等的使用及注意事项,

    Java多线程Junit测试GroboUtils-5.zip

    Java多线程与JUnit测试是软件开发中两个重要的概念,特别是在大型项目中,它们的结合使用对于提升代码质量、确保程序稳定性和优化性能至关重要。GroboUtils-5.zip这个压缩包很可能包含了一些辅助进行Java多线程测试...

    多线程,高并发.zip

    在IT领域,多线程和高并发是两个关键概念,特别是在Java编程中,它们对于构建高效、可扩展的系统至关重要。下面将详细解释这两个概念及其在Java中的实现和应用。 多线程是指在一个应用程序中同时运行多个独立的执行...

    java-Thread-study-summary.zip_java 多线程

    Java多线程是Java编程中的核心概念,它允许程序同时执行多个任务,提高了系统的效率和响应性。在Java中,实现多线程有两种主要方式:继承`Thread`类和实现`Runnable`接口。本资料“java-Thread-study-summary.zip”...

    多线程-day01.docx

    在 Java 中,多线程是并发编程的重要概念,它允许程序同时执行多个任务,从而提高系统效率和资源利用率。在本教程中,我们将探讨多线程的基础知识,包括并发与并行的区别,进程与线程的概念,以及如何在 Java 中创建...

    人工智能-项目实践-多线程-Java多线程高并发实例.zip

    在本项目实践中,我们将深入探讨Java中的多线程与高并发技术,特别是在人工智能领域的应用。Java作为一种广泛应用的编程语言,其强大的并发处理能力是其在大规模数据处理和高性能计算场景中备受青睐的原因之一。本...

    c3p0-0.9.1.2源码及jar包

    4. **线程安全**:C3P0的设计确保了多线程环境下的安全性,多个线程可以同时获取和释放连接,而不会引起数据混乱。 5. **扩展性**:C3P0提供了丰富的API,允许开发者自定义连接池的行为,如设置连接属性、监听器等...

    汪文君高并发编程实战视频资源下载.txt

     Java高并发第三阶段(JUC).png  高并发编程第三阶段01讲 AtomicInteger多线程下测试讲解.mkv  高并发编程第三阶段02讲 AtomicInteger API详解,以及CAS算法详细介绍.mkv  高并发编程第三阶段03讲 利用CAS构造一...

    L16-多线程和线程同步-讲义.pdf

    Java中的多线程和线程同步是编程中关键的概念,特别是在处理并发操作和优化性能时。下面我们将深入探讨这些主题。 首先,线程是程序执行的独立路径,它允许一个程序同时执行多个任务。在Java中,我们有两种方式创建...

    Java并发编程与高并发解决方案-学习笔记-www.itmuch.com.pdf

    本文将基于文档《Java并发编程与高并发解决方案-学习笔记***.pdf》中提供的内容,来详细阐述并发编程和高并发的基本概念、CPU多级缓存与缓存一致性、以及Java内存模型。 ### 并发与高并发概念 在现代多线程编程中...

Global site tag (gtag.js) - Google Analytics