synchornized

简介: java的关键字synchronized为防止资源冲突提供了内置支持。当任务要执行被synchronized关键字保护起来的代码段时,它将检查锁是否可用,然后获取锁、执行代码、释放锁。 1.锁的粒度 1.1作用于普通方法 锁的粒度是当前对象。 在对象上调用其任意synchronized方法时,此对象(this)被加锁,此时该对象上的其他synchronized方法只有等到前一个方法
java的关键字 synchronized为防止资源冲突提供了内置支持。当任务要执行被synchronized关键字保护起来的代码段时,它将检查锁是否可用,然后获取锁、执行代码、释放锁。

1.锁的粒度

1.1作用于普通方法

锁的粒度是当前对象。
在对象上调用其 任意synchronized方法时, 此对象(this)被加锁,此时该对象上的 其他synchronized方法只有等到前一个方法调用完毕并释放了锁之后才能被调用。
两个对象并发调用同一synchronized方法,并不会互斥。

1.2所用于静态方法

锁的是这个类,即XX.class

1.3 锁住指定对象

如 synchronized (obj) {...}。


2.代码示例

我们期望generator.next()每次都产生的是偶数,这在单线程下没任何问题。但多线程下就会有产生奇数的可能。
将 public int next() {} 改为synchronized public int next() {} 即可解决问题。所有对象都自动含有单一的锁(也成为监视器)。


Thread. yield()告诉java线程调度器“重要的部分我已经完成,此刻可以将我挂起,切换给其他线程执行”。这个函数可用可不用,但用了它更容易按照自己的掌控去切换线程,从而验证一些东西。

目录
相关文章
|
4月前
|
负载均衡 NoSQL Java
|
5月前
|
算法 Java 调度
synchronized学习分享(借鉴-侵-删)
synchronized学习分享(借鉴-侵-删)
25 0
|
存储 缓存 NoSQL
redission YYDS
redission YYDS
|
6月前
|
缓存 安全 算法
Java并发简介(什么是并发)
Java并发简介(什么是并发)
|
存储 缓存 安全
synchronized的简单理解
synchronized的简单理解
94 0
Java多线程 -- 公平锁和非公平锁的一些思考
在java的锁机制中,公平和非公平的参考物是什么,个人而言觉得是相对产生的结果而立,简单的来说,如果一个线程组里,能保证每个线程都能拿到锁,那么这个锁就是公平锁。
1357 0
|
NoSQL Java Redis
Redisson 分布式锁源码 05:公平锁加锁
默认的加锁逻辑是非公平的。 在加锁失败时,线程会进入 while 循环,一直尝试获得锁,这时候是多线程进行竞争。就是说谁抢到就是谁的。
326 0
|
存储 网络协议 安全
【内网安全-基础】基础知识、信息收集、工具
【内网安全-基础】基础知识、信息收集、工具
197 0
【内网安全-基础】基础知识、信息收集、工具
|
Java 安全 开发框架
Java进阶笔记——synchronized 关键字原理
众所周知 synchronized 关键字是解决并发问题常用解决方案,有以下三种使用方式: 同步普通方法,锁的是当前对象。
918 0
|
2天前
|
存储 人工智能 弹性计算
阿里云弹性计算_加速计算专场精华概览 | 2024云栖大会回顾
2024年9月19-21日,2024云栖大会在杭州云栖小镇举行,阿里云智能集团资深技术专家、异构计算产品技术负责人王超等多位产品、技术专家,共同带来了题为《AI Infra的前沿技术与应用实践》的专场session。本次专场重点介绍了阿里云AI Infra 产品架构与技术能力,及用户如何使用阿里云灵骏产品进行AI大模型开发、训练和应用。围绕当下大模型训练和推理的技术难点,专家们分享了如何在阿里云上实现稳定、高效、经济的大模型训练,并通过多个客户案例展示了云上大模型训练的显著优势。