Java多线程
文章平均质量分 91
清元丶
这个作者很懒,什么都没留下…
展开
-
【Java 多线程】【Synchronized 原理&死锁】
比如:两个工人,只有一把锤子和钉子,一个人拿着锤,一个人拿着钉子,两人都需要对方持有的,但都不放下自己持有的,进入僵持状态;同一个线程,对同一把锁,加锁两次,可重入没有事,不可重入就会产生锁竞争,等待锁,自己竞争自己,自等待;存在锁竞争,尝试加锁状态,但不是真正的加锁,而是打上个偏向锁的标记,记录这个锁属于哪个线程。区分是否真正需要加锁,有其他的线程来打标记,JVM就会通知赶紧加上锁。锁竞争更加激烈,多条线程进入自旋,就会升级为重量级锁。延迟加锁,非必要,不加锁,避免加锁的开销。最有效解决死锁问题,就是。原创 2023-08-04 23:52:29 · 544 阅读 · 0 评论 -
【Java 多线程】【CAS问题】
Compare and Swap 比较并交换,这是一种并发算法,用于多线程环境下的原子操作操作:内存中有原数据 A ,旧的预期值 B 和 新的预期值 C。原创 2023-08-04 23:17:38 · 207 阅读 · 1 评论 -
【Java多线程】【锁策略】
synchronized 既是悲观锁, 也是乐观锁,既是轻量级锁,也是重量级锁。轻量级锁部分基于自旋锁实现.重量级锁部分基于挂起等待锁实现~~Synchronized 加锁 初始使用乐观锁策略. 当发现锁竞争比较频繁的时候, 就会自动切换成悲观锁策略.系统对于线程的调度是随机的,自带synchronized 这个锁,是非公平的;实现:需要记录当前线程已经持有该锁的次数,每次释放锁时,也需相应减少持有次数。涉及到互斥,就会产生线程等待,线程挂起,就只能等待系统再次分配;通常使用互斥锁等阻塞锁实现;原创 2023-08-02 22:27:59 · 152 阅读 · 0 评论 -
【Java多线程】【定时器和线程池】
定时器类似闹钟,达到一个设定的时间后,就执行指定好的代码想结束可以调用 cancel() 方法,如果还有正在执行的定时任务,会等到任务结束才会退出程序可以purge()来立即清除所有定时任务。原创 2023-08-02 07:30:00 · 777 阅读 · 0 评论 -
【Java多线程】【阻塞队列】
从名字上 可以看出,它是队列的一种,那肯定是 先进先出(FIFO)的数据结构。原创 2023-08-01 22:23:24 · 821 阅读 · 3 评论 -
【Java多线程】【单例模式】
目录1、概念单例模式的优缺点2、单例模式的实现 2.1 实现单例模式的条件 2.2 饿汉模式 2.3 懒汉模式2.4 懒汉模式的优化 单例模式的线程安全问题 实现单例模式方式:代码: 2.3 懒汉模式代码: 2.4 懒汉模式的优化 单例模式的线程安全问题原创 2023-07-24 07:30:00 · 202 阅读 · 0 评论 -
【Java多线程】【wait 和 notify】
线程之间是 抢占式执行的,调度是无序的,再实际开发中,要求协调多个线程之间的执行先后顺序;wait()、notify()、notifyAll()都是 Object类方法。原创 2023-07-23 22:33:24 · 137 阅读 · 1 评论 -
【Java多线程】【线程状态和安全】
当一个线程 执行到一个synchronized修饰的代码块或者方法时,首先会尝试获取对象的锁,如果该对象的锁已经被其他线程获取,那么当前线程就会被阻塞,直到其他线程释放了该对象的锁;,也就是说,如果一个线程已经持有了某个对象的锁,那么它再次进入该对象的synchronized代码块时,仍然可以获得该对象的锁,而不会被自己所持有的锁所阻塞。对于多个线程的符合操作不具有原子性。这是一个操作,分为三步实现,在多线程中,想要实现线程安全,就要保证原子性;但在多线程,执行程度高,优化后的代码不一定是自己想要的值,原创 2023-07-20 23:37:16 · 296 阅读 · 0 评论 -
【Java多线程】【Thread类及常见方法】
Thread类是 JVM用来管理线程的一个类,每个线程都有一个唯一的相关联的Thread对象;每个执行流需要一个对象描述,就是Thread类的对象,JVM讲这些Thread对象组织起来,用于线程调度,线程管理;原创 2023-07-19 22:46:12 · 792 阅读 · 0 评论 -
【Java多线程】【Java创建线程】
以上java中线程的创建 都和Thread类有关;Thread是java中用于实现多线程编程的类在java中,每个线程都是一个Thread类的实例对象通过创建Thread类的实例对象,就可以在程序中创建一个新的线程,从而实现多线程编程原创 2023-07-16 08:00:00 · 146 阅读 · 1 评论 -
【Java 多线程】【线程和进程的区别】
线程是指在进程内部运行的轻量级执行单元,是操作系统进行任务调度的基本单位一个线程就是一个 "执行流". 一个进程可以包含多个线程,多个线程之间 "同时" 执行着多份代码.原创 2023-07-15 22:20:17 · 77 阅读 · 1 评论 -
【Java多线程】【进程】
线程C(工厂C)说这个订单剩下的部分要到下个月再交货,到下个月的时间再来,CPU(车队)就要记下已经运了多少货,还剩下多少下个月来继续。进程在离开CPU时就要把当前的运行的中间结果进行“存档”,等下次进程回到CPU上,再恢复之前的”存档“,从上次执行的结果向后执行。,通常从1开始递增,操作系统通过PID来管理进程的运行和资源分配,比如对进程进行调度、信号传递、进程间通信等。有的时候需要 进程之间的交互,但是虚拟的地址空间,无法让两个进程交互影响,在这种隔离性的前提现下,找出一个。原创 2023-07-10 23:07:46 · 147 阅读 · 1 评论