synchronized 关键字解析
同步锁依赖于对象,每个对象都有一个同步锁。
现有一成员变量 Test,当线程 A 调用 Test 的 synchronized 方法,线程 A 获得 Test 的同步锁,同时,线程 B 也去调用 Test 的 synchronized 方法,此时线程 B 无法获得 Test 的同步锁,必须等待线程 A 释放 Test 的同步锁才能获得从而执行对应方法的代码。
综上,正确使用 synchronized 关键字可确保原子性。
synchronized 关键字的特性应用
特性 1:
当线程 A 调用某对象的synchronized 方法 或者 synchronized 代码块时,若同步锁未释放,其他线程调用同一对象的synchronized 方法 或者 synchronized 代码块时将被阻塞,直至线程 A 释放该对象的同步锁。
DEMO1,synchronized 方法:
public class Test { private static class Counter { public synchronized void count() { for (int i = 0; i < 6; i++) { System.out.println(Thread.currentThread().getName() + ", i = " + i); } } } private static class MyThread extends Thread { private Counter mCounter; public MyThread(Counter counter) { mCounter = counter; } @Override public void run() { super.run(); mCounter.count(); } } public static void main(String[] var0) { Counter counter = new Counter(); // 注:myThread1 和 myThread2 是调用同一个对象 counter MyThread myThread1 = new MyThread(counter); MyThread myThread2 = new MyThread(counter); myThread1.start(); myThread2.start(); }}
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容- 如何在 Java 中实现对正方形的缩放操作?(如何在Java中对正方形进行缩放操作)
- 如何正确使用 Java 的 join 方法?(java join方法怎么使用)
- Java 中 DecimalFormat 在哪些场景下使用较为合适?(Java DecimalFormat在哪里使用合适)
- 如何确保Redis客户端的安全性:实用技巧与最佳实践
- 在 JavaScript 中如何使用 parentNode?(javascript中的parentNode怎么用)
- 如何高效编码 Java Supplier 接口?(java supplier接口的高效编码技巧)
- 如何进行 Java NoSQL 查询优化?(java nosql查询优化怎样进行)
- Java 中 `equals()` 的核心究竟是什么?(java eques的核心是什么)
- Java代理模式的优缺点分别有哪些?(Java代理模式有哪些优缺点)
- 2024下半年北京软考成绩复查时间及流程
猜你喜欢
AI推送时光机Java多线程并发编程 Synchronized关键字
后端开发2023-05-31
Java多线程并发synchronized 关键字
后端开发2024-04-02
Java多线程并发编程 Volatile关键字
后端开发2023-05-31
Java多线程之synchronized关键字的使用
后端开发2024-04-02
Java多线程synchronized关键字怎么输出
后端开发2023-06-17
怎样深入理解Java多线程与并发框中的synchronized 关键字
后端开发2023-06-05
java线程安全Synchronized关键字怎么使用
后端开发2023-06-04
详解Java并发编程之volatile关键字
后端开发2024-04-02
理解Java多线程之并发编程
后端开发2023-02-02
Java并发编程之关键字volatile知识总结
后端开发2024-04-02
Java并发编程之关键字volatile的深入解析
后端开发2024-04-02
Java并发编程之关键字volatile的示例分析
后端开发2023-06-15
Java并发编程中volatile关键字有什么作用
后端开发2023-06-25
python并发编程之多线程编程
后端开发2023-01-31
如何深入理解Java多线程与并发框中的volatile关键字
后端开发2023-06-05
线程池的艺术:掌握并发编程的关键
后端开发2024-03-13
java并发编程synchronized底层实现原理
后端开发2024-04-02
Java并发编程(03):多线程并发访问,同步控制
后端开发2023-06-02
咦!没有更多了?去看看其它编程学习网 内容吧