随笔分类 - JUC
摘要:我使用过synchronized和lock,volatile synchronized和volatile的区别? Synchronized 是关键字,用来加锁。 Volatile 只是保持变量的线程可见性。通常适用于一个线程写,多个线程读的场景。 volatile 本质是在告诉jvm当前变量在寄存器
阅读全文
摘要:线程是什么? 线程被称为轻量级进程,是程序执行的最小单位,它是指在程序执行过程中,能够执行代码的一个执行单位。每个程序程序都至少有一个线程,也即是程序本身。 线程的状态 Java语言定义了5种线程状态,在任意一个时间点,一个线程只能有且只有其中一个状态。这5种状态如下: 新建(New):创建后尚未启
阅读全文
摘要:串行在时间上不可能发生重叠,前一个任务还没有搞定,下一个任务只能等着,也叫顺序执行。 并行在时间上时重叠的,两个任务在同一时刻互相不干扰的同时执行。 并发允许两个任务彼此干扰。统一时间点,只有一个任务运行,交替执行。 并发的三大特性 原子性 原子性是指在一个操作中cpu不可以在中途暂停然后再调度,即
阅读全文
摘要:1.进程和线程的区别 进程就是一个程序从创建,运行,到消亡的过程 一个进程可以创建多个线程,每个线程都有自己的程序计数器,本地方法栈,虚拟机栈 2.说一下线程的生命周期?线程有哪几种状态? java线程在运行的生命周期中的指定时刻只能处于下面集中不同状态的其中一种状态。 线程有5大状态:创建,就绪,
阅读全文
摘要:一、前言在了解悲观锁和乐观锁之前,我们先了解一下什么是锁,为什么要用到锁? 技术来源于生活,锁不仅在程序中存在,在现实中我们也随处可见,例如我们上下班打卡的指纹锁,保险柜上的密码锁,以及我们我们登录的用户名和密码也是一种锁,生活中用到锁可以保护我们人身安全(指纹锁)、财产安全(保险柜密码锁)、信息安
阅读全文
摘要:池化技术的思想主要是为了减少每次获取资源的消耗,提高对资源的利用率。 线程池的好处:降低资源的消耗,提高响应速度,提高线程的可管理性。 如何创建线程池? 1.通过构造方法实现 2.通过Executor框架的工具类Executors来实现。 线程池原理:我们在代码中模拟了 10 个任务,我们配置的核心
阅读全文
摘要:调用start()方法方可启动线程并且使线程进入就绪状态,这是真正的多线程工作。 直接调用run()方法,会把run()当作一个main线程下的普通方法去执行,这不是多线程工作。
阅读全文
摘要:两个进程都在等待对方执行完毕才能继续往下执行的时候就发生了死锁。结果就是两个进程都陷入了无限的等待。 如何确保N个线程可以访问N个资源同时又不导致死锁? 指定获取锁的顺序,并且强制线程按照顺序获取锁,因此所有的线程都是以同样的顺序加锁和释放锁,就不会出现死锁了。
阅读全文
摘要:1.线程间的切换和调度的成本远远小于进程 2.多线程并发编程是开发高并发系统的基础,利用好多线程机制可以提高系统的并发能力。 并发编程可能遇到的问题:内存泄露,线程不安全,死锁
阅读全文