JAVA 多线程模型

小夏 科技 更新 2024-01-31

局部变量:在堆栈中。

局部变量永远不会有安全问题。 因为局部变量不是共享的。 (一个线程,一个堆栈。 局部变量:在堆栈中。 因此,局部变量永远不会被共享。

实例变量:在堆中。

实例变量在堆中,并且只有一个堆。

静态变量:在方法区域中。

静态变量位于方法区域中,并且只有一个方法区域。

堆和方法区域由多个线程共享,因此可能存在**程序安全问题。

局部变量 + 常量:不会有线程安全问题。

成员变量:可能存在线程安全问题。

异步编程模型:

线程 t1 和线程 t2,各自执行自己的任务,t1 不关心 t2,t2 不关心 t1,没有人需要等待任何人,这种编程模型叫做:异步编程模型。

实际上,它就是这样:多线程并发(更高效。 )

同步编程模型:

线程 t1 和线程 t2,当执行 ** 程序 t1 时,必须等待 t2 线程执行。

结束,或者说当 T2 线程执行时,需要等待 T1 线程完成,两个线程之间发生等待关系,这就是同步编程模型。

效率较低。 线程排队等待执行。

相似文章

    FFmpeg CLI 支持多线程,以实现几十年来“最复杂的重构”

    ffmpeg CLI 最近得到了一个重大改进 合并多线程转码流水线 多线程转码管道 FFMPEG .根据开发团队的说法,这项工作是 几十年来 FFMPEG CLI 最复杂的重构之一 主要功能包括添加线程感知转码调度基础设施 将编码任务移动到单独的线程以及各种其他底层更改。这意味着 ffmpeg 现在...

    跟踪在多线程异步系统中传递

    j a 线程异步的常见实现有 new thread executorservice 当然,还有其他的,例如 fork join下面会提到这些,下面主要针对这两个场景结合ddtrace和springboot练习。. .. com.datadoghq dd trace api io.opentracin...

    进程和线程之间的区别

    过程。进程是正在运行的程序 进程驻留在内存中 它是系统执行资源分配和调度的独立单元。每个进程都有自己的存储空间和系统资源。注意 进程 A 和进程 B 的内存是独立的,不共享。线。线程是进程中的单个顺序控制流,也可以理解为执行路径。单线程 进程包含顺序控制流 一个执行路径 多线程 一个进程包含多个顺序...

    线程的生命周期阶段

    线它是程序执行的最小单元,在进程中并发执行。线程的生命周期可以分为几个阶段,这些阶段描述了线程从创建到消亡的过程。线程生命周期的主要阶段如下 .新增功能 在此阶段,线程对象已创建,但尚未启动。此时,可以设置线程的属性 例如,优先级 名称等 线程尚未分配系统资源,例如 CPU 时间片和内存空间。.可运...

    参考 java 中 void 的用法

    在 J A 编程语言中,void 是一个特殊关键字,用于指示方法没有返回值。此关键字在定义方法时使用,指示该方法不向调用方返回任何值。在方法主体中,可以调用其他方法并执行各种操作,但最终它们不会返回任何结果。下面是使用 void 关键字的示例 j a复制 在此示例中,我们定义了一个名为sayhell...