![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
zzh3864
这个作者很懒,什么都没留下…
展开
-
daemon 守护线程
Daemon线程是一种支持性线程,因为它主要用作程序中台调度以及支持性工作。这意味着,当一个Java虚拟机中不存在非Daemon线程的时候,Java虚拟机将会推出。可以通过调用Thread.setDaemon(true)将线程设为Daemon线程。(Daemon属性需要在线程启动之前设置)在Java虚拟机退出时finally块不一定会执行。public class Test1 { static class DaemonRunner implements Runnable{ @Ove原创 2021-11-21 16:26:08 · 1067 阅读 · 0 评论 -
并行与并发
并行cpu就好比一条高速公路,如果公路有四个车道,那么它可以并行行驶四辆车,cpu的核心数就是车道数。并发谈论并发的时候必须在单位时间内讨论,俗话说一心不能二用,cpu也是如此。原则上来说一个cpu只能分配给一个进程,如果想“一心多用”,就只能使用并发技术,常见的就是“时间片轮转进程调度算法”。在我们的操作系统上肯定不止打开了一个软件,那么是如何做到一心多用的呢,实际上cpu的运行速度是非常快的,他可以飞速的每个进程之间切换,每个进程执行一个时间片,然后切换下一个进程。由于切换速度非常快,所以我们原创 2021-11-22 13:42:36 · 1001 阅读 · 0 评论 -
volatile的实现原理
volatile关键字在多线程场景中使用,其底层实现原理是:当对volatile变量执行写操作后,JMM会把工作内存中的最新变量值强制刷新到主内存写操作会导致其他线程中的缓存无效操作系统的缓存行(cacheline)默认是64bytes,声明一个变量x,volatile int x,当两个线程同时对x进行 x++ 操作时,会先将x加载到自己的缓存中,修改之后强制刷新到公共的缓存中,以此来保证一致性。...原创 2021-11-22 10:08:23 · 245 阅读 · 0 评论 -
Java Thread 线程的创建方法及生命周期
线程的概念程序: Program,是一个指令的集合进程: Process,(正在执行中的程序)是一个静态的概念进程是程序的一次静态执行过程,占用特定的地址空间每个进程都是独立的,由3部分组成 cpu data code**缺点:**内存的浪费,cpu的负担**线程:**是进程中一个“单一的连续控制流程”(a single Thread,equential flow of control)/执行路径线程又被称为轻量级进程(lightweight process)Threads run原创 2020-06-08 10:28:36 · 123 阅读 · 0 评论