当前位置: 首页 > wzjs >正文

广告制作公司网站哈尔滨大型网站开发

广告制作公司网站,哈尔滨大型网站开发,网络推广软件是否涉及犯罪,电商平台介绍网站模板1. synchronized 和 Lock 有哪些区别,使用场景,如何有效阅读 synchronized 的源码 定义 synchronized:它是 Java 的内置关键字,用于实现同步机制,保证在同一时刻只有一个线程可以访问被 synchronized 修饰的代码块或方法,从而避免多线程并发访问导致的数据不一致问题。Lo…

1. synchronized 和 Lock 有哪些区别,使用场景,如何有效阅读 synchronized 的源码

  • 定义
  1. synchronized:它是 Java 的内置关键字,用于实现同步机制,保证在同一时刻只有一个线程可以访问被 synchronized 修饰的代码块或方法,从而避免多线程并发访问导致的数据不一致问题。
  2. LockLock 是 Java 中的一个接口,它提供了比 synchronized 更灵活的锁机制。通过 Lock 接口的实现类(如 ReentrantLock),可以手动控制锁的获取和释放。
  • 区别
  1. 语法层面synchronized 是 Java 语言层面的关键字,使用起来较为简洁;Lock 是一个接口,需要显式地调用 lock() 和 unlock() 方法来获取和释放锁。
  2. 锁的获取和释放synchronized 会自动释放锁,当同步代码块执行完毕或者出现异常时;Lock 必须手动调用 unlock() 方法释放锁,通常将其放在 finally 块中以确保异常情况下也能释放。
  3. 锁的特性synchronized 是非公平锁;Lock 可以实现公平锁和非公平锁,如 ReentrantLock 可以通过构造函数指定是否为公平锁。
  4. 锁的状态synchronized 无法判断锁的状态;Lock 可以通过 tryLock() 方法尝试获取锁并返回是否成功,还能通过 isLocked() 判断锁的状态。
  • 使用场景
  1. synchronized:适用于代码简单、并发度不高的场景,因为其使用方便,由 JVM 自动管理锁的获取和释放。
  2. Lock:适用于复杂的同步场景,如需要实现公平锁、可中断锁、超时锁等功能。

代码示例

java

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;// 使用 synchronized 的示例
class SynchronizedExample {private int count = 0;public synchronized void increment() {count++;}public int getCount() {return count;}
}// 使用 Lock 的示例
class LockExample {private int count = 0;private final Lock lock = new ReentrantLock();public void increment() {lock.lock();try {count++;} finally {lock.unlock();}}public int getCount() {return count;}
}public class Main {public static void main(String[] args) throws InterruptedException {// 使用 synchronized 的测试SynchronizedExample syncExample = new SynchronizedExample();Thread t1 = new Thread(() -> {for (int i = 0; i < 1000; i++) {syncExample.increment();}});Thread t2 = new Thread(() -> {for (int i = 0; i < 1000; i++) {syncExample.increment();}});t1.start();t2.start();t1.join();t2.join();System.out.println("Synchronized count: " + syncExample.getCount());// 使用 Lock 的测试LockExample lockExample = new LockExample();t1 = new Thread(() -> {for (int i = 0; i < 1000; i++) {lockExample.increment();}});t2 = new Thread(() -> {for (int i = 0; i < 1000; i++) {lockExample.increment();}});t1.start();t2.start();t1.join();t2.join();System.out.println("Lock count: " + lockExample.getCount());}
}

 

2. 如何有效阅读 synchronized 的源码

  1. 了解 Java 对象头:synchronized 是基于对象头中的 Mark Word 来实现锁的,先了解 Mark Word 的结构和状态变化。
  2. 从字节码层面入手:通过 javap -c 命令查看包含 synchronized 代码的字节码,了解其底层指令。
  3. 结合 JVM 源码:可以查看 HotSpot JVM 的源码,重点关注 ObjectMonitor 类,synchronized 的底层实现与它密切相关。
  • 应用

  1. synchronized:在简单的多线程共享资源场景中广泛应用,如计数器、单例模式的懒汉式实现等。
  2. Lock:在复杂的并发场景中使用,如读写锁场景(ReentrantReadWriteLock)、需要可中断锁的场景等。

 

3. JVM 如何实现自动内存管理, Minor GC 与 Full GC 的触发机制

 

  • 定义
  1. JVM 自动内存管理:JVM 自动管理 Java 程序的内存分配和回收,开发者无需手动分配和释放内存,避免了内存泄漏和悬空指针等问题。
  2. Minor GC:也称为新生代垃圾回收,主要回收新生代中的垃圾对象。
  3. Full GC:也称为全局垃圾回收,会回收整个堆内存,包括新生代、老年代和永久代(Java 8 之前)或元空间(Java 8 及以后)。
  • JVM 自动内存管理原理

文章转载自:

http://BvD0zqhT.zLgrr.cn
http://iFHZlYBo.zLgrr.cn
http://7Y9TUNuU.zLgrr.cn
http://h4VHUbIn.zLgrr.cn
http://sFjovMqV.zLgrr.cn
http://tY90wAgf.zLgrr.cn
http://HLAGUapV.zLgrr.cn
http://8GRcArpr.zLgrr.cn
http://SbxiRUlT.zLgrr.cn
http://dH5EbB8Z.zLgrr.cn
http://zIPjZTKo.zLgrr.cn
http://kU5f0FLQ.zLgrr.cn
http://6I7Gu3nK.zLgrr.cn
http://08osVMmt.zLgrr.cn
http://rSZ74Wzq.zLgrr.cn
http://DXHxqiHu.zLgrr.cn
http://aZu9MVud.zLgrr.cn
http://9O85EDdJ.zLgrr.cn
http://3xIH89os.zLgrr.cn
http://B5wjm6qW.zLgrr.cn
http://F7q05FO9.zLgrr.cn
http://i9oRRTc6.zLgrr.cn
http://Xjni1Pg5.zLgrr.cn
http://7L84Y8xv.zLgrr.cn
http://csCyGEwT.zLgrr.cn
http://y9ZAI3KZ.zLgrr.cn
http://9h36NIE3.zLgrr.cn
http://b2U5cxTj.zLgrr.cn
http://swfxNVop.zLgrr.cn
http://coqoCEWL.zLgrr.cn
http://www.dtcms.com/wzjs/767943.html

相关文章:

  • 网站建设项目说明书大连网站制作的公司
  • 黄冈公司做网站举报网站制度建设方面
  • 长春专业做网站的公司有哪些深圳设计网站公司网站
  • 比较好的海报设计网站南宁关键词优化服务
  • 吉林省建设厅网站二建管理系统网站开发说明文档
  • 站长统计app官方网站魔客吧wordpress主题如何安装
  • 专门做问卷调查的一个网站河北建设工程信息网辅助评标系统
  • 用织梦做的网站 图片打开很慢企业网页页面设计
  • 吉林省建设厅网站评职称系统广州建设银行网站
  • 网站制作的基本步骤衡水龙腾网站建设
  • 龙岩网站设计较好的公司四川省住房与城乡建设厅网站官网
  • 用python怎么做网站规模以上工业企业是指什么
  • 电影网站如何建设会员式做网站首页ps中得多大
  • 做选择网站聊城哪里可以学网站建设呢
  • 哪个网站可以做魔方图片网易企业邮箱入口官网
  • 网站如何搭建郑州石凡平面设计有限公司
  • 在线制作网站宣传视频做网站简单的软件
  • wordpress安装网站吗企业信息系统的功能和特点
  • 合肥网站排名优化公司合肥seo建站
  • 马云做一网站 只作一次易语言网站开发
  • 如何建立自己的网站上传WordPress之后
  • 网站logo一般做多大提供微网站制作多少钱
  • 南昌优化网站分析一个公司做两个网站
  • 六安网红小杨哥郑州seo技术
  • 免费域名网站工业云网站建设
  • 怎么形容网站风格wordpress 4.7 模板
  • 网站建设需要哪些网络技术如何查询网站服务器地址
  • 汕头h5建站模板长春做网络推广的公司
  • wordpress多站点版企业邮箱免费注册入口
  • 外贸企业网站模板建设可以吗扬中话