1,并发:一种状态。多个程序在同一时刻只能执行一个,需要在一段时间内才能先后执行完所有程序。
并行:一种状态。多个程序在同一时刻可以同时执行。
竞争:一种状态。在没获得共享资源前,多个程序同时或依次获取资源的行为状态。
2,并发特点:有共享资源;先后执行所有程序(可能会先后获得该共享资源,比如单核cpu)。
并行特点:无共享资源;同时执行所有程序(比如多核cpu)。
竞争特点:都还未得到共享资源;不一定同时执行。
3,并发可能导致竞争,也可能不会(比如两男追一美女,其中一个放弃竞争)。
并发可能导致线程不安全。
4,并发条件:1,有共享资源;2,同一时刻有多个程序获取共享资源。
5,数据竞争:
竞争条件:
6,导致线程不安全的因素:状态。
7,状态:即数据。这种数据存储在状态变量中。
状态特点:内部可变,外部共享。
8,何谓线程安全:单线程下,所见即所得。多线程下,连续正确的执行。多线程的隐患要少于单线程。
9,如何保证线程安全:
无状态;
有一个状态时(使用final常量;不共享;volatile;原子对象);
有多个状态时(避免状态依赖;同步)。
10,原子性:单独的,不可再分割的操作或过程。
11,可见性:A线程在同步块区域所做的事(指对共享对象的状态修改),B线程在获得锁之后,也可看见。
12,重排序:对于至少两个操作,操作的顺序本来是从A到B,但在多线程环境下,可能会变为先执行B,然后再执行A。
13,可重入性:A线程进入锁对象的同步块之后,可以在不退出该块的情况下,继续进入相同的锁对象的不同同步块。
14,锁:是一个对象。可以锁住一个同步块。具有互斥性,原子性,可见性,可重入性,避免重排序。
15,同步:加锁或者使用volatile。
16,volatile:是一种弱同步。本意为易挥发的、易变的。
分享到:
相关推荐
并发理论, 并发关键字, Lock 体系, 原子操作类, 发容器 & 并发工具, 线程池, 并发实践 Java是一种面向对象的编程语言,由Sun Microsystems于1995年推出。它是一种跨平台的语言,意味着可以在不同的操作系统上...
Java并发理论是编程中至关重要的一个领域,尤其是在多核处理器和高并发应用环境下。线程安全是并发编程的核心概念,确保在多线程环境中代码的正确性和一致性。 **线程安全的理解** 线程安全问题通常发生在多线程...
本知识框架是对《Java并发编程实战》一书的总结,主要围绕基本线程和线程池的使用、线程使用中出现的三大问题以及如何解决这些问题出发总结出了这个知识框架,通过该框架能更加深入的去理解Java并发理论知识。
**并发理论基础**: 并发编程的核心在于多线程,允许多个执行单元在同一时间执行任务,以充分利用系统资源。在Java中,通过创建Thread对象或使用Runnable接口可以实现线程。共享变量是多线程间交互的基础,而线程间...
该项目为Java并发理论课程项目,源码设计精良,包含85个文件,涵盖62个Java源文件、16个XML配置文件、6个配置文件以及1个Git忽略文件,旨在通过实践加深对并发理论的理解和应用。
Java 多线程与并发理论基础 Java 多线程与并发是 Java 编程语言中的一种机制,用于提高程序的执行效率和响应速度。多线程的出现是为了解决 CPU、内存、I/O 设备速度差异的问题,通过分时复用 CPU、缓存和进程、...
Java并发工具包(J.U.C)是Java编程语言中用于...这需要开发者具备一定的并发理论知识,并结合实践经验来避免常见的并发陷阱。对于J.U.C的深入研究和实践,不仅能够提升Java编程能力,也会对编程思想有更深层次的理解。
在并发理论中,Java内存模型定义了共享变量的访问规则,以支持Java的并发编程。Java中的垃圾回收机制用于自动释放不再使用的对象所占用的内存资源。finalize()方法是Object类的一个方法,当对象不再被引用时,垃圾...
这篇文档将深入探讨标题和描述中提及的多个IT领域,包括Java JDK源码分析、并发理论、面试准备、数据库管理、Linux操作系统、中间件技术、分布式系统以及网络协议。我们将逐一解析这些知识点,并结合标签中的相关...
量子并发编程模型的基础理论涵盖量子力学、量子计算、并发理论及并行计算等多个领域。这些理论旨在探索如何利用量子力学原理提高并发计算的效率和性能,为未来的量子计算应用奠定坚实的理论基础。 #### 架构设计 ...
并发理论 存储库包含有关与并发理论有关的问题的解决方案的备份。 编程语言:Java,JavaScript
学习课件可能涵盖了并发理论、最佳实践、性能优化等方面的内容。例如,它可能讲解了线程安全的数据结构,如ConcurrentHashMap、CopyOnWriteArrayList等,以及并发工具类如Future、Callable、CompletableFuture,...
并发理论 * Java内存模型 * Java中垃圾回收有什么目的? * finalize()方法什么时候被调用? 重排序与数据依赖性 * 为什么代码会重排序? * as-if-serial规则和happens-before规则的区别 并发关键字 * ...
论文进一步使用通信顺序进程(CSP)来形式化描述并发对象的语义,这是一种强大的并发理论工具,它能够精确地表达并发执行的并发性和同步约束。通过CSP的形式化描述,可以确保并发模型的正确性和一致性,有助于避免...
数据依赖 所谓的数据依赖是指,如果多个java指令之间顺序变化会...比如控制依赖(if),满足if条件才会执行里面的操作,里面的操作是使用共享变量做运算,为了提高指令的并发,会先做运算把结果保存在缓存在,等if真的
并发--并发的一些理论知识 资源源于不但搜索,自由源于不但努力
学习高并发,还需要理解基础的并发理论,例如线程、锁、同步机制、死锁、活锁和饥饿等问题。同时,熟悉Java的并发包java.util.concurrent,了解ExecutorService、Semaphore、CountDownLatch、CyclicBarrier等工具类...
以及提及的CSP(Communicating Sequential Processes)和《The Theory and Practice of Concurrency》一书,我可以推断出知识点大致范围,将围绕并行系统和并发理论进行阐述。 知识点: 1. 并行系统概念: 并行...